#arc110c. [arc110_c]Exoswap

[arc110_c]Exoswap

题目描述

给定一个排列P=P1,P2,ldots,PNP = P_1, P_2, \\ldots, P_N,其中PP1,2,ldots,N1, 2, \\ldots, N的排列。

你需要在PP上执行以下N1N - 1个操作,每个操作只能执行一次,且顺序可以任意:

  • 交换P1P_1P2P_2

  • 交换P2P_2P3P_3

    vdots\\vdots

  • 交换PN1P_{N-1}PNP_N

你的任务是通过配置操作的顺序将PP排序为升序。如果不可能将PP排序为升序,则输出-1

约束条件

  • 所有输入的值均为整数。
  • 2leqNleq2times1052 \\leq N \\leq 2 \\times 10^5
  • PP1,2,ldots,N1, 2, \\ldots, N的排列。

输入

输入以以下格式从标准输入中给出:

NN P1P_1 P2P_2 ldots\\ldots PNP_N

输出

如果无法通过配置操作的顺序将PP排序为升序,则输出-1

否则,输出N1N - 1行,表示一系列将PP排序为升序的操作。第ii行(1leqileqN11 \\leq i \\leq N - 1)应该包含jj,其中第ii个操作交换PjP_jPj+1P_{j + 1}

如果有多个这样的操作序列,任何一个都可以接受。


示例输入1

5
2 4 1 5 3

示例输出1

4
2
3
1

以下操作序列将PP排序为升序:

  • 首先,交换P4P_4P5P_5,得到2,4,1,3,52, 4, 1, 3, 5
  • 然后,交换P2P_2P3P_3,得到2,1,4,3,52, 1, 4, 3, 5
  • 接着,交换P3P_3P4P_4,得到2,1,3,4,52, 1, 3, 4, 5
  • 最后,交换P1P_1P2P_2,得到1,2,3,4,51, 2, 3, 4, 5

示例输入2

5
5 4 3 2 1

示例输出2

-1