#arc162b. [arc162_b]Insertion Sort 2

[arc162_b]Insertion Sort 2

题目描述

给定一个排列 P=(P1,P2,ldots,PN)P=(P_1,P_2,\\ldots,P_N),其中 PP(1,2,ldots,N)(1,2,\\ldots,N) 的一个排列。

判断是否可以通过最多进行 2times1032\\times 10^3 次以下操作之一来重新排列 PP,如果可能的话,请展示一种操作序列。

  • 选择整数 iijj,满足 1leqiN11\\leq i \leq N-10jN20 \leq j \leq N-2。令 Q=(Q1,Q2,ldots,QN2)Q = (Q_1, Q_2,\\ldots,Q_{N-2}) 为从 PP 中删除 (Pi,Pi+1)(P_i,P_{i+1}) 后得到的序列。用 $(Q_1,\\ldots,Q_j, P_i, P_{i+1}, Q_{j+1},\\ldots,Q_{N-2})$ 替换 PP

约束条件

  • 2leqNleq1032 \\leq N \\leq 10^3
  • PP(1,2,ldots,N)(1,2,\\ldots,N) 的一个排列。
  • 所有输入值都是整数。

输入

从标准输入读取输入,其格式如下:

NN P1P_1 P2P_2 ldots\\ldots PNP_N

输出

如果在 2times1032\\times 10^3 次操作内无法将 PP 重新排列成升序,则输出 No。如果可以将 PP 重新排列成升序,令 M(0leqMleq2times103)M\\ (0 \\leq M \\leq 2\\times 10^3) 为操作次数,令 ik,jki_k,j_k 为第 kk 次操作 (1leqkleqM)(1\\leq k \\leq M) 的选取的 iijj,并按以下格式输出:

Yes MM i1i_1 j1j_1 i2i_2 j2j_2 vdots\\vdots iMi_M jMj_M

如果有多个解,任意一个都会被视为正确。


示例输入 1

5
1 4 2 3 5

示例输出 1

Yes
1
3 1

执行操作 i=3,j=1i=3,j=1

然后 Q=(P1,P2,P5)=(1,4,5)Q=(P_1,P_2,P_5)=(1,4,5),因此得到 P=(Q1,P3,P4,Q2,Q3)=(1,2,3,4,5)P=(Q_1,P_3,P_4,Q_2,Q_3) = (1,2,3,4,5)

因此,可以通过一次操作将 PP 重新排列成升序。


示例输入 2

2
2 1

示例输出 2

No

可以证明,无法在 2times1032\\times 10^3 次操作内将 PP 重新排列成升序。


示例输入 3

4
3 4 1 2

示例输出 3

Yes
3
3 0
1 2
3 0

不需要最小化操作次数。