問題文
0,1,ldots,N−1 を並び替えた数列 P=P0,P1,ldots,PN−1 があります。
あなたは P に対して、以下の操作を最大 2times105 回まで行うことができます。
- 整数 i (0leqileqN−1) を宣言する。Pi と P(i+Pi)textrmmodN を入れ替える
適切に操作を行うことで、P を昇順に並び替えてください。もしそれが不可能な場合、-1
を出力してください。
制約
- 入力は全て整数
- 2leqNleq100
- P は 0,1,ldots,N−1 を並び替えた数列
入力
入力は以下の形式で標準入力から与えられる。
N
P0 P1 ldots PN−1
出力
2times105 回以下の操作で P を昇順に並び替えることが不可能な場合、-1
を出力せよ。
2times105 回以下の操作で P を昇順に並び替えることが可能な場合、K 回操作を行うとして、以下の形式で K+1 行出力せよ。
- 1 行目は整数 K
- 1+i (1leqileqK) 行目は、i 回目の操作で宣言する整数 j (0leqjleqN−1)
操作回数を最小化する必要はない。 また、2times105 回以下の操作で P を昇順に並び替える操作列が複数存在する場合、どれを出力しても構わない。
入力例 1
8
7 1 2 6 4 0 5 3
出力例 1
4
6
0
3
0
この操作列は、以下のように P を昇順に並び替えます。
-
まず i として 6 を宣言し、P6(=5) と P(6+5)textrmmod8=P3(=6) を入れ替える。P は 7,1,2,5,4,0,6,3 になる
-
次に i として 0 を宣言し、P0(=7) と P(0+7)textrmmod8=P7(=3) を入れ替える。P は 3,1,2,5,4,0,6,7 になる
-
次に i として 3 を宣言し、P3(=5) と P(3+5)textrmmod8=P0(=3) を入れ替える。P は 5,1,2,3,4,0,6,7 になる
-
次に i として 0 を宣言し、P0(=5) と P(0+5)textrmmod8=P5(=0) を入れ替える。P は 0,1,2,3,4,5,6,7 になる