

Time Limit: 2.525 sec / Memory Limit: 1024 MB
配点 : 800 点
問題文
ニワンゴ君は N 枚のカードを持っています。カードには 1,2,\ldots,N と番号が振られています。 ニワンゴ君はこれらのカードを一列に並べることにしました。
ニワンゴ君は以下の N 個の条件の全てを満たすカードの並べ方が存在するかどうかを知りたいです。 ニワンゴ君のためにそのような並べ方が存在するかどうかを判定し、存在する場合は辞書順最小の並べ方を求めてください。
- カード 1 の右隣のカードは(存在するならば) a_1 でない
- カード 2 の右隣のカードは(存在するならば) a_2 でない
- \vdots
- カード N の右隣のカードは(存在するならば) a_N でない
制約
- 2 \leq N \leq 10^{5}
- 1 \leq a_i \leq N
- a_i \neq i
入力
入力は以下の形式で標準入力から与えられる。
N a_1 a_2 \ldots a_N
出力
条件を満たす並べ方が存在しない場合は -1
を、存在する場合は条件を満たす辞書順最小のカードの並びを下記のフォーマットで出力せよ。
ここで、b_i は左から i 番目のカードの番号である。
b_1 b_2 \ldots b_N
入力例 1
4 2 3 4 1
出力例 1
1 3 2 4
- (1,3,2,4) よりも辞書順で小さい並べ方は (1,2,3,4) がありますが、これはカード 1 の右隣のカードは 2 でない、という条件に反するため不適切です。
入力例 2
2 2 1
出力例 2
-1
- 条件を満たす並べ方が存在しない場合は
-1
を出力してください。
入力例 3
13 2 3 4 5 6 7 8 9 10 11 12 13 12
出力例 3
1 3 2 4 6 5 7 9 8 10 12 11 13
Score : 800 points
Problem Statement
Niwango has N cards, numbered 1,2,\ldots,N. He will now arrange these cards in a row.
Niwango wants to know if there is a way to arrange the cards while satisfying all the N conditions below. To help him, determine whether such a way exists. If the answer is yes, also find the lexicographically smallest such arrangement.
- To the immediate right of Card 1 (if any) is NOT Card a_1.
- To the immediate right of Card 2 (if any) is NOT Card a_2.
- \vdots
- To the immediate right of Card N (if any) is NOT Card a_N.
Constraints
- 2 \leq N \leq 10^{5}
- 1 \leq a_i \leq N
- a_i \neq i
Input
Input is given from Standard Input in the following format:
N a_1 a_2 \ldots a_N
Output
If no arrangements satisfy the conditions, print -1
. If such arrangements exist, print the lexicographically smallest such arrangement, in the following format:
b_1 b_2 \ldots b_N
Here, b_i represents the i-th card from the left.
Sample Input 1
4 2 3 4 1
Sample Output 1
1 3 2 4
- The arrangement (1,2,3,4) is lexicographically smaller than (1,3,2,4), but is invalid, since it violates the condition "to the immediate right of Card 1 is not Card 2."
Sample Input 2
2 2 1
Sample Output 2
-1
- If no arrangements satisfy the conditions, print
-1
.
Sample Input 3
13 2 3 4 5 6 7 8 9 10 11 12 13 12
Sample Output 3
1 3 2 4 6 5 7 9 8 10 12 11 13