#arc110f. [arc110_f]Esoswap

[arc110_f]Esoswap

問題文

0,1,ldots,N10, 1, \\ldots, N - 1 を並び替えた数列 P=P0,P1,ldots,PN1P = P_0, P_1, \\ldots, P_{N - 1} があります。

あなたは PP に対して、以下の操作を最大 2times1052 \\times 10^5 回まで行うことができます。

  • 整数 i (0leqileqN1)i ~ (0 \\leq i \\leq N - 1) を宣言する。PiP_iP(i+Pi)textrmmodNP_{(i + P_i) \\textrm{ mod } N} を入れ替える

適切に操作を行うことで、PP を昇順に並び替えてください。もしそれが不可能な場合、-1 を出力してください。

制約

  • 入力は全て整数
  • 2leqNleq1002 \\leq N \\leq 100
  • PP0,1,ldots,N10, 1, \\ldots, N - 1 を並び替えた数列

入力

入力は以下の形式で標準入力から与えられる。

NN P0P_0 P1P_1 ldots\\ldots PN1P_{N - 1}

出力

2times1052 \\times 10^5 回以下の操作で PP を昇順に並び替えることが不可能な場合、-1 を出力せよ。

2times1052 \\times 10^5 回以下の操作で PP を昇順に並び替えることが可能な場合、KK 回操作を行うとして、以下の形式で K+1K + 1 行出力せよ。

  • 11 行目は整数 KK
  • 1+i (1leqileqK)1 + i~(1 \\leq i \\leq K) 行目は、ii 回目の操作で宣言する整数 j (0leqjleqN1)j ~ (0 \\leq j \\leq N - 1)

操作回数を最小化する必要はない。 また、2times1052 \\times 10^5 回以下の操作で PP を昇順に並び替える操作列が複数存在する場合、どれを出力しても構わない。


入力例 1

8
7 1 2 6 4 0 5 3

出力例 1

4
6
0
3
0

この操作列は、以下のように PP を昇順に並び替えます。

  • まず ii として 66 を宣言し、P6(=5)P_6 (= 5)P(6+5)textrmmod8=P3(=6)P_{(6 + 5) \\textrm{ mod } 8} = P_3 (= 6) を入れ替える。PP7,1,2,5,4,0,6,37, 1, 2, 5, 4, 0, 6, 3 になる

  • 次に ii として 00 を宣言し、P0(=7)P_0 (= 7)P(0+7)textrmmod8=P7(=3)P_{(0 + 7) \\textrm{ mod } 8} = P_7 (= 3) を入れ替える。PP3,1,2,5,4,0,6,73, 1, 2, 5, 4, 0, 6, 7 になる

  • 次に ii として 33 を宣言し、P3(=5)P_3 (= 5)P(3+5)textrmmod8=P0(=3)P_{(3 + 5) \\textrm{ mod } 8} = P_0 (= 3) を入れ替える。PP5,1,2,3,4,0,6,75, 1, 2, 3, 4, 0, 6, 7 になる

  • 次に ii として 00 を宣言し、P0(=5)P_0 (= 5)P(0+5)textrmmod8=P5(=0)P_{(0 + 5) \\textrm{ mod } 8} = P_5 (= 0) を入れ替える。PP0,1,2,3,4,5,6,70, 1, 2, 3, 4, 5, 6, 7 になる