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行目の値に誤りがあり、修正しました。