配点 : 500 点
問題文
1,2,…,N を並び替えた数列 P=P1,P2,…,PN があります。
あなたは P に対して、以下の N−1 種類の操作を、任意の順番でちょうど 1 回ずつ行わなければなりません。
- P1 と P2 を入れ替える
- P2 と P3 を入れ替える
⋮
- PN−1 と PN を入れ替える
操作の順番を適切に決めることで、P を昇順に並び替えてください。
もしそれが不可能な場合、-1 を出力してください。
制約
- 入力は全て整数
- 2≤N≤2×105
- P は 1,2,…,N を並び替えた数列
入力
入力は以下の形式で標準入力から与えられる。
N
P1 P2 … PN
出力
どのような順番で操作しても P を昇順に並び替えることができない場合、-1 を出力せよ。
P を昇順に並び替えることができる場合、そのような操作列を N−1 行使って出力せよ。
i∼(1≤i≤N−1) 行目には、i 回目の操作で Pj と Pj+1 を入れ替えるとして、j を出力せよ。
P を昇順に並び替える操作列が複数存在する場合、どれを出力しても構わない。
5
2 4 1 5 3
4
2
3
1
以下のような操作列が P を昇順に並び替えます。
- まず P4 と P5 を入れ替える。P は 2,4,1,3,5 になる
- 次に P2 と P3 を入れ替える。P は 2,1,4,3,5 になる
- 次に P3 と P4 を入れ替える。P は 2,1,3,4,5 になる
- 次に P1 と P2 を入れ替える。P は 1,2,3,4,5 になる
5
5 4 3 2 1
-1