atcoder#ARC110C. [ARC110C] Exoswap

[ARC110C] Exoswap

配点 : 500500

問題文

1,2,,N1, 2, \ldots, N を並び替えた数列 P=P1,P2,,PNP = P_1, P_2, \ldots, P_N があります。

あなたは PP に対して、以下の N1N - 1 種類の操作を、任意の順番でちょうど 1 回ずつ行わなければなりません。

  • P1P_1P2P_2 を入れ替える
  • P2P_2P3P_3 を入れ替える \vdots
  • PN1P_{N - 1}PNP_N を入れ替える

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

制約

  • 入力は全て整数
  • 2N2×1052 \leq N \leq 2 \times 10^5
  • PP1,2,,N1, 2, \ldots, N を並び替えた数列

入力

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

NN

P1P_1 P2P_2 \ldots PNP_N

出力

どのような順番で操作しても PP を昇順に並び替えることができない場合、-1 を出力せよ。

PP を昇順に並び替えることができる場合、そのような操作列を N1N - 1 行使って出力せよ。 i(1iN1)i \sim (1 \leq i \leq N - 1) 行目には、ii 回目の操作で PjP_jPj+1P_{j + 1} を入れ替えるとして、jj を出力せよ。

PP を昇順に並び替える操作列が複数存在する場合、どれを出力しても構わない。

5
2 4 1 5 3
4
2
3
1

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

  • まず P4P_4P5P_5 を入れ替える。PP2,4,1,3,52, 4, 1, 3, 5 になる
  • 次に P2P_2P3P_3 を入れ替える。PP2,1,4,3,52, 1, 4, 3, 5 になる
  • 次に P3P_3P4P_4 を入れ替える。PP2,1,3,4,52, 1, 3, 4, 5 になる
  • 次に P1P_1P2P_2 を入れ替える。PP1,2,3,4,51, 2, 3, 4, 5 になる
5
5 4 3 2 1
-1