#arc162b. [arc162_b]Insertion Sort 2

[arc162_b]Insertion Sort 2

問題文

(1,2,ldots,N)(1,2,\\ldots,N) の順列 P=(P1,P2,ldots,PN)P=(P_1,P_2,\\ldots,P_N) が与えられます。

PP に対し以下の操作を 2times1032\\times 10^3 回以下行うことで PP を昇順に並び替えられるか判定し、可能な場合は実際に操作手順を一つ示してください。

  • 1leqileqN1,0leqjleqN21\\leq i \\leq N-1,0 \\leq j \\leq N-2 を満たす整数 i,ji,j を選ぶ。Q=(Q1,Q2,ldots,QN2)Q = (Q_1, Q_2,\\ldots,Q_{N-2})PP から (Pi,Pi+1)(P_i,P_{i+1}) を抜き出して得られる列としたとき、PP を $(Q_1,\\ldots,Q_j, P_i, P_{i+1}, Q_{j+1},\\ldots,Q_{N-2})$ で置き換える。

制約

  • 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 を出力せよ。昇順に並び替えられる場合、操作回数を M(0leqMleq2times103)M\\ (0 \\leq M \\leq 2\\times 10^3) とし、kk 回目 (1leqkleqM)(1\\leq k \\leq M) の操作で選んだ i,ji,jik,jki_k,j_k として以下の形式で出力せよ。

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) となります。

よって 11 回の操作で 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

操作回数を最小化する必要はありません。