AT_arc110_c [ARC110C] Exoswap
Description
[problemUrl]: https://atcoder.jp/contests/arc110/tasks/arc110_c
$ 1,\ 2,\ \ldots,\ N $ を並び替えた数列 $ P\ =\ P_1,\ P_2,\ \ldots,\ P_N $ があります。
あなたは $ P $ に対して、以下の $ N\ -\ 1 $ 種類の操作を、任意の順番で**ちょうど $ 1 $ 回ずつ**行わなければなりません。
- $ P_1 $ と $ P_2 $ を入れ替える
- $ P_2 $ と $ P_3 $ を入れ替える
$ \vdots $
- $ P_{N\ -\ 1} $ と $ P_N $ を入れ替える
操作の順番を適切に決めることで、$ P $ を昇順に並び替えてください。 もしそれが不可能な場合、`-1` を出力してください。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ P_1 $ $ P_2 $ $ \ldots $ $ P_N $
Output Format
どのような順番で操作しても $ P $ を昇順に並び替えることができない場合、`-1` を出力せよ。
$ P $ を昇順に並び替えることができる場合、そのような操作列を $ N\ -\ 1 $ 行使って出力せよ。 $ i\ ~\ (1\ \leq\ i\ \leq\ N\ -\ 1) $ 行目には、$ i $ 回目の操作で $ P_j $ と $ P_{j\ +\ 1} $ を入れ替えるとして、$ j $ を出力せよ。
$ P $ を昇順に並び替える操作列が複数存在する場合、どれを出力しても構わない。
Explanation/Hint
### 制約
- 入力は全て整数
- $ 2\ \leq\ N\ \leq\ 2\ \times\ 10^5 $
- $ P $ は $ 1,\ 2,\ \ldots,\ N $ を並び替えた数列
### Sample Explanation 1
以下のような操作列が $ P $ を昇順に並び替えます。 - まず $ P_4 $ と $ P_5 $ を入れ替える。$ P $ は $ 2,\ 4,\ 1,\ 3,\ 5 $ になる - 次に $ P_2 $ と $ P_3 $ を入れ替える。$ P $ は $ 2,\ 1,\ 4,\ 3,\ 5 $ になる - 次に $ P_3 $ と $ P_4 $ を入れ替える。$ P $ は $ 2,\ 1,\ 3,\ 4,\ 5 $ になる - 次に $ P_1 $ と $ P_2 $ を入れ替える。$ P $ は $ 1,\ 2,\ 3,\ 4,\ 5 $ になる