#arc110f. [arc110_f]Esoswap

[arc110_f]Esoswap

翻译:

给出一个整数 N(2N100)N(2\leq N\leq 100) 和一个从 00 开始的长度为 NN 的排列 P=P0,P1,P2PN1P=P_0,P_1,P_2\cdots P_{N-1},你可以进行以下操作:

  • 选择一个整数 i(0iN1)i(0\leq i \leq N-1)
  • 交换当前数列上的 PiP_{i}P(i + Pi)  mod  NP_{(i\ +\ P_i)\ \textrm{\ mod\ }\ N} 两个位置上的数字。

求能否在 2×1052\times 10^5 之内构造出一种操作方案使得整个序列单调上升,如果有,则在第一行输出操作个数 KK,接下来 KK 行,每行按顺序输出数列操作的位置 ii,若没有,则输出 1-1

样例解释:

原序列为 712640537,1,2,6,4,0,5,3

我们可以进行 44 次操作:

  • 对位置 66 进行操作则交换 P6 (=5)P_6\ (=5)P(6+5)mod8=P3 (=6)P_{(6+5)\mod 8}=P_3\ (=6) 两个数则此时序列变为 7,1,2,5,4,0,6,37, 1, 2, 5, 4, 0, 6, 3
  • 对位置 00 进行操作则交换 P0 (=7)P_0\ (=7)P(0+7)mod8=P7 (=3)P_{(0+7)\mod 8}=P_7\ (=3) 两个数则此时序列变为 3,1,2,5,4,0,6,73, 1, 2, 5, 4, 0, 6, 7
  • 对位置 33 进行操作则交换 P3 (=5)P_3\ (=5)P(3+5)mod8=P0 (=3)P_{(3+5)\mod 8}=P_0\ (=3) 两个数则此时序列变为 5,1,2,3,4,0,6,75, 1, 2, 3, 4, 0, 6, 7
  • 对位置 00 进行操作则交换 P0 (=5)P_0\ (=5)P(0+5)mod8=P5 (=0)P_{(0+5)\mod 8}=P_5\ (=0) 两个数则此时序列变为 0,1,2,3,4,5,6,70, 1, 2, 3, 4, 5, 6, 7,此时该数列有序。