seuOJ380 - 相邻交换

题目描述

给定一个 1n1\sim n 的排列 a1,a2,,ana_1,a_2,\cdots,a_n,你可以进行以下操作:

选择 i,ji,j ,满足 1i,jn,ij=1,aii,ajj1\leq i,j\leq n, |i-j|=1,a_i\ne i,a_{j}\ne j,交换 ai,aja_i,a_{j}

现在你要在 n(n1)2\frac{n(n-1)}{2} 步内将排列变为 ai=ia_i=i ,或者判断不存在方案。

输入格式

第一行一个数 n (n1000)n\ (n\leq 1000)

第二行 nn 个数 a1,a2,,ana_1,a_2,\cdots,a_n,表示初始的排列。

输出格式

  1. 如果有解

    第一行输出 YES,第二行输出一个数表示操作次数。

    然后输出若干行,每行两个数表示交换的位置。

  2. 如果无解,输出一行 NO。

样例

Input1

4
2 4 1 3

Output1

YES
3
2 3
2 1
3 4

Input2

4
1 4 3 2

Output2

NO