Восстановление перестановки
시간 제한2초메모리 제한1024 MB
길이 n인 순열이 주어질 때, 고정점 n개를 끼워 넣고 값을 다시 매겨, 삭제와 압축 과정이 입력을 되돌려 주는 로빈 순열을 복원한다.
문제
Сегодня в школе Кристофер изучал последовательности и перестановки. Напомним, что перестановкой чисел от 1 до называется последовательность , , , в которую каждое из указанных чисел входит ровно один раз.
Особенно ему понравились следующие определения:
- Спуском в позиции в перестановке называют такую ситуацию, что ;
- Неподвижной точкой в позиции в перестановке называют такой элемент , что .
Узнав эти определения, он придумал собственную перестановку и назвал её перестановкой Робина.
Назовем перестановку из натуральных чисел от 1 до перестановкой Робина, если выполнены следующие условия:
- имеет ровно спусков, и все его спуски находяться на нечетных позициях (то есть для всех );
- имеет ровно неподвижных точек.
Например, перестановка является перестановкой Робина.
Кристофер решил поделиться своим открытием с Кроликом. Узнав о перестановке Робина, Кролик придумал следующее преобразование: удалим все неподвижные точки в последовательности и превратим оставшийся вектор в перестановку, заменив оставшиеся числа на количество элементов, не превосходящих его в перестановке. Например, преобразование перестановки дает .
Кристофер теперь хочет получить по преобразованной перестановке перестановку Робина.
입력
В первой строке входного файла дано --- число элементов в преобразованной переставновке (). Во второй строке входного файла дано натуральных чисел --- преобразованная перестановка.
출력
Если нет решения, вывести в первой строке выходного файла. Если существует перестановка Робина, то вывести её. Если несколько решений, то вывести любую перестановку Робина.