给定一个 1∼n1\sim n1∼n 的排列 a1,a2,⋯ ,ana_1,a_2,\cdots,a_na1,a2,⋯,an,你可以进行以下操作:
选择 i,ji,ji,j ,满足 1≤i,j≤n,∣i−j∣=1,ai≠i,aj≠j1\leq i,j\leq n, |i-j|=1,a_i\ne i,a_{j}\ne j1≤i,j≤n,∣i−j∣=1,ai=i,aj=j,交换 ai,aja_i,a_{j}ai,aj。
现在你要在 n(n−1)2\frac{n(n-1)}{2}2n(n−1) 步内将排列变为 ai=ia_i=iai=i ,或者判断不存在方案。
第一行一个数 n (n≤1000)n\ (n\leq 1000)n (n≤1000)。
第二行 nnn 个数 a1,a2,⋯ ,ana_1,a_2,\cdots,a_na1,a2,⋯,an,表示初始的排列。
如果有解
第一行输出 YES,第二行输出一个数表示操作次数。
然后输出若干行,每行两个数表示交换的位置。
如果无解,输出一行 NO。
4 2 4 1 3
YES 3 2 3 2 1 3 4
4 1 4 3 2
NO