Восстановление перестановки

시간 제한2초메모리 제한1024 MB

요약
길이 n인 순열이 주어질 때, 고정점 n개를 끼워 넣고 값을 다시 매겨, 삭제와 압축 과정이 입력을 되돌려 주는 로빈 순열을 복원한다.
난이도

어려움10점 중 8점

유형
그리디, 동적 계획법, 조합론, 구현
정답자
아직 제출이 없습니다

문제

Сегодня в школе Кристофер изучал последовательности и перестановки. Напомним, что перестановкой чисел от 1 до nn называется последовательность a_1a\_1, …\ldots, a_na\_n, в которую каждое из указанных чисел входит ровно один раз.

Особенно ему понравились следующие определения:

  • Спуском в позиции ii в перестановке ⟨a_1,a_2,…,a_n⟩\langle a\_1, a\_2, \ldots, a\_{n}\rangle называют такую ситуацию, что a_i>a_i+1a\_i > a\_{i + 1};
  • Неподвижной точкой в позиции ii в перестановке ⟨a_1,a_2,…,a_n⟩\langle a\_1, a\_2, \ldots, a\_{n}\rangle называют такой элемент a_ia\_i, что a_i=ia\_i = i.

Узнав эти определения, он придумал собственную перестановку и назвал её перестановкой Робина.

Назовем перестановку A=⟨a_1,a_2,…,a_2n⟩A = \langle a\_1, a\_2, \ldots, a\_{2n}\rangle из 2n2n натуральных чисел от 1 до 2n2n перестановкой Робина, если выполнены следующие условия:

  • AA имеет ровно nn спусков, и все его спуски находяться на нечетных позициях (то есть a_2i−1>a_2i\<a_2i+1a\_{2i-1}>a\_{2i}\<a\_{2i+1} для всех ii);
  • AA имеет ровно nn неподвижных точек.

Например, перестановка ⟨3,2,6,4,5,1⟩\langle 3, 2, 6, 4, 5, 1 \rangle является перестановкой Робина.

Кристофер решил поделиться своим открытием с Кроликом. Узнав о перестановке Робина, Кролик придумал следующее преобразование: удалим все неподвижные точки в последовательности и превратим оставшийся вектор в перестановку, заменив оставшиеся числа на количество элементов, не превосходящих его в перестановке. Например, преобразование перестановки ⟨3,2,6,4,5,1⟩\langle 3, 2, 6, 4, 5, 1 \rangle дает ⟨3,2,6,4,5,1⟩→⟨3,6,1⟩→⟨2,3,1⟩\langle 3, 2, 6, 4, 5, 1 \rangle \to \langle 3, 6, 1 \rangle \to \langle 2, 3, 1 \rangle.

Кристофер теперь хочет получить по преобразованной перестановке перестановку Робина.

입력

В первой строке входного файла дано nn --- число элементов в преобразованной переставновке (1≤n≤100,0001 \le n \le 100\\,000). Во второй строке входного файла дано nn натуральных чисел --- преобразованная перестановка.

출력

Если нет решения, вывести −1-1 в первой строке выходного файла. Если существует перестановка Робина, то вывести её. Если несколько решений, то вывести любую перестановку Робина.

예제2

  1. 예제 1

    입력
    3
    2 3 1
    
    예상 출력
    3 2 6 4 5 1
    
  2. 예제 2

    입력
    1
    1
    
    예상 출력
    -1