AT_ttpc2015_i そーっとソート
题目描述
给定一个排列 $ a_1, a_2, \ldots, a_n $,其中 $n$ 是一个 $ (1 \le n \le 50) $ 的整数。你可以进行以下操作最多 $10^5$ 次:
- 交换 $a_i$ 和 $a_j$ 的值。但是,$ \mid i-j\mid = a_i $ 或者 $ \mid i-j\mid = a_j $ 必须成立。
判断是否可以将数列排序为 $ 1, 2, \ldots, n$,如果可以,请输出一种操作步骤。
输入格式
输入包括以下内容:
- 第一行:一个整数 $n$,表示数列的长度。
- 第二行:$n$ 个空格分隔的整数,表示数列的排列 $a_i$。保证 $a_i$ 是 $1, 2, \ldots, n$ 的一个排列。
输出格式
输出到标准输出。如果无论如何操作,无法在 $ 10^5 $ 次内将数列排序为 $ 1, 2, \ldots, n $,则输出`MuriyarokonnNaN`。
如果可以排序,按以下格式输出:
- 第一行:操作次数 $R$。
- 接下来 $R$ 行:每行两个整数 $X_i$ 和 $Y_i$,表示第 $ i $ 次操作将 $ a_{X_i} $ 和 $ a_{Y_i} $ 的值交换。
## 样例 #1
### 输入
```
5
4 2 3 1 5
```
### 输出
```
3
2 4
1 2
2 4
```
### 样例解释
可以通过上述三次操作将数列排序为 $ 1, 2, 3, 4, 5 $。
说明/提示
### Sample Explanation 1
(13:55)1行目の値に誤りがあり、修正しました。