問題文
(1,2,ldots,N) の順列 P=(P1,P2,ldots,PN) が与えられます。
P に対し以下の操作を 2times103 回以下行うことで P を昇順に並び替えられるか判定し、可能な場合は実際に操作手順を一つ示してください。
- 1leqileqN−1,0leqjleqN−2 を満たす整数 i,j を選ぶ。Q=(Q1,Q2,ldots,QN−2) を P から (Pi,Pi+1) を抜き出して得られる列としたとき、P を $(Q_1,\\ldots,Q_j, P_i, P_{i+1}, Q_{j+1},\\ldots,Q_{N-2})$ で置き換える。
制約
- 2leqNleq103
- P は (1,2,ldots,N) の順列
- 入力される数値は全て整数
入力
入力は以下の形式で標準入力から与えられる。
N
P1 P2 ldots PN
出力
2times103 回以下の操作で P を昇順に並び替えられない場合 No
を出力せよ。昇順に並び替えられる場合、操作回数を M(0leqMleq2times103) とし、k 回目 (1leqkleqM) の操作で選んだ i,j を ik,jk として以下の形式で出力せよ。
Yes
M
i1 j1
i2 j2
vdots
iM jM
条件を満たす解が複数存在する場合、どれを出力しても正解とみなされる。
入力例 1
5
1 4 2 3 5
出力例 1
Yes
1
3 1
i=3,j=1 として操作を行います。
Q=(P1,P2,P5)=(1,4,5) になるので、P=(Q1,P3,P4,Q2,Q3)=(1,2,3,4,5) となります。
よって 1 回の操作で P を昇順に並び替えられます。
入力例 2
2
2 1
出力例 2
No
2times103 回以下の操作では P を昇順に並び替えられないことが証明できます。
入力例 3
4
3 4 1 2
出力例 3
Yes
3
3 0
1 2
3 0
操作回数を最小化する必要はありません。