만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

순열 복원

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

요약
변환된 순열이 주어질 때, 그 결과로 바뀌는 로빈 순열을 만들고 불가능하면 -1을 출력합니다.
난이도

보통10점 중 7점

유형
그리디, 정렬, 구현
정답자
아직 제출이 없습니다

문제

크리스토퍼는 오늘 학교에서 수열과 순열을 배웠다. 11부터 nn까지의 수가 각각 정확히 한 번씩 나타나는 수열 a1,…,ana_1, \ldots, a_n을 순열이라고 한다.

크리스토퍼가 특히 마음에 들어 한 정의는 다음과 같다.

  • 순열 ⟨a1,a2,…,an⟩\langle a_1, a_2, \ldots, a_n \rangle에서 위치 ii의 하강은 ai>ai+1a_i > a_{i+1}인 경우를 말한다.
  • 순열 ⟨a1,a2,…,an⟩\langle a_1, a_2, \ldots, a_n \rangle에서 위치 ii의 고정점은 ai=ia_i = i를 만족하는 원소 aia_i를 말한다.

크리스토퍼는 직접 순열을 만들고 이를 로빈 순열이라고 불렀다. 11부터 2n2n까지의 수로 이루어진 순열 A=⟨a1,a2,…,a2n⟩A = \langle a_1, a_2, \ldots, a_{2n} \rangle이 다음 두 조건을 모두 만족하면 로빈 순열이다.

  • AA의 하강은 정확히 nn개이며, 모든 하강은 홀수 위치에 있다. 즉, 모든 ii에 대해 a2i−1>a2i<a2i+1a_{2i-1} > a_{2i} < a_{2i+1}이다.
  • AA의 고정점은 정확히 nn개이다.

예를 들어 ⟨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