#ATagc058a. [AGC058A] Make it Zigzag

[AGC058A] Make it Zigzag

题目描述

给定一个排列 P=(P1,P2,,P2N)P=(P_1,P_2,\cdots,P_{2N}),其中 (1,2,,2N)(1,2,\cdots,2N)

你可以进行以下操作 00NN 次:

  • 选择一个整数 xx (1  x  2N11\ \leq\ x\ \leq\ 2N-1),交换 PxP_xPx+1P_{x+1} 的值。

请找出一系列操作,使得操作后的 PP 满足以下条件:

  • 对于每个 i=1,3,5,,2N1i=1,3,5,\cdots,2N-1Pi < Pi+1P_i\ <\ P_{i+1}
  • 对于每个 i=2,4,6,,2N2i=2,4,6,\cdots,2N-2Pi > Pi+1P_i\ >\ P_{i+1}

请输出满足条件的一系列操作,以以下形式输出:

KK x1x_1 x2x_2 \cdots xKx_K

其中,KK 表示操作次数 (0  K  N0\ \leq\ K\ \leq\ N),xix_i (1  xi  2N11\ \leq\ x_i\ \leq\ 2N-1) 表示第 ii 次操作选择的 xx 的值。如果存在多个满足条件的解,任意输出一个即可。

输入格式

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

NN P1P_1 P2P_2 \cdots P2NP_{2N}

输出格式

按以下格式输出操作序列:

KK x1x_1 x2x_2 \cdots xKx_K

样例 #1

样例输入 #1

2
4 3 2 1

样例输出 #1

2
1 3

样例 #2

样例输入 #2

1
1 2

样例输出 #2

0

样例 1

输入

2
4 3 2 1

输出

2
1 3

样例 2

输入

1
1 2

输出

0

说明/提示

约束条件

  • 1  N  1051\ \leq\ N\ \leq\ 10^5
  • (P1,P2,,P2N)(P_1,P_2,\cdots,P_{2N})(1,2,,2N)(1,2,\cdots,{2N}) 的排列
  • 输入的数值均为整数

样例解释 1

P=(4,3,2,1)P=(4,3,2,1) 根据操作后,得到 P=(3,4,1,2)P=(3,4,1,2),满足条件。