#agc058a. [agc058_a]Make it Zigzag

[agc058_a]Make it Zigzag

题目描述

给定一个排列 P=(P1,P2,cdots,P2N)P=(P_1,P_2,\\cdots,P_{2N}),其中包含了数字 112N2N

可以在 00NN 次操作之间执行以下操作:

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

请设计一系列操作使得 PP 满足下列条件:

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

可以证明这样的一系列操作总是存在。

约束条件

  • 1leqNleq1051 \\leq N \\leq 10^5
  • (P1,P2,cdots,P2N)(P_1,P_2,\\cdots,P_{2N})(1,2,cdots,2N)(1,2,\\cdots,{2N}) 的一个排列。
  • 输入中的所有值均为整数。

输入格式

从标准输入中以以下格式获得输入:

NN P1P_1 P2P_2 cdots\\cdots P2NP_{2N}

输出格式

以以下格式打印所需的操作序列:

KK x1x_1 x2x_2 cdots\\cdots xKx_K

这里,KK 是执行的操作次数 (0leqKleqN0 \\leq K \\leq N),xix_i 是第 ii 次操作中选择的 xx 的值 (1leqxileq2N11 \\leq x_i \\leq 2N-1)。如果有多个满足条件的解,输出任何一个即可。

样例输入 1

2
4 3 2 1

样例输出 1

2
1 3

这些操作使得 P=(3,4,1,2)P=(3,4,1,2),满足条件。

样例输入 2

1
1 2

样例输出 2

0