AT_ttpc2015_i そーっとソート

Description

[problemUrl]: https://atcoder.jp/contests/ttpc2015/tasks/ttpc2015_i $ (1,\ 2,\ …,\ N) $ の順列として、数列 $ a_1,\ a_2,\ …,\ a_N $ が与えられます。 あなたは、以下の操作を $ 100,000 $ 回まで行うことができます。 - $ a_i $ と $ a_j $ の値を入れ替える。ただし、$ |i-j|\ =\ a_i $ または $ |i-j|\ =\ a_j $ を満たしていなければならない。 数列を $ 1,\ 2,\ …,\ N $ へと並び変えることが出来るか判定し、また、出来るならばその手順を $ 1 $ つ示してください。

Input Format

入力は以下の形式で標準入力から与えられる。 > $ N $ $ a_1 $ $ a_2 $ … $ a_N $ - $ 1 $ 行目には数列の要素数 $ N(1\ \leq\ N\ \leq\ 50) $ が与えられる。 - $ 2 $ 行目には、数列の要素 $ a_i $ が空白区切りで与えられる。 - $ a_1,\ a_2,\ ,…,\ a_N $ は $ (1,\ 2,\ …,\ N) $ の順列である。

Output Format

出力は標準出力に行い、末尾に改行を入れること。 もしどのような手順でも $ 100,000 $ 回以内の操作では数列がソート出来ないならば、`MuriyarokonnNaN` と出力すること。 ソートすることが出来る場合は、以下の形式に従い出力すること。 > $ R $ $ X_1 $ $ Y_1 $ $ X_2 $ $ Y_2 $ : $ X_R $ $ Y_R $ - $ 1 $ 行目には操作の回数 $ R(0\ \leq\ R\ \leq\ 100,000) $ を出力する。 - $ 2 $ 行目から $ R $ 行には操作の詳細を出力する。このうち $ i $ 行目には整数 $ X_i(1\ \leq\ X_i\ \leq\ N),\ Y_i(1\ \leq\ Y_i\ \leq\ N) $ を空白区切りで出力する。これは、$ i $ 回目の操作では $ a_{X_i} $ と $ a_{Y_i} $ の値を入れ替えることを表す。(修正,15:41)

Explanation/Hint

### Sample Explanation 1 (13:55)1行目の値に誤りがあり、修正しました。