AT_abc350_c [ABC350C] Sort

Description

[problemUrl]: https://atcoder.jp/contests/abc350/tasks/abc350_c $ (1,2,\ldots,N) $ の並び替えである数列 $ A=(A_1,\ldots,A_N) $ が与えられます。 次の操作を $ 0 $ 回以上 $ N-1 $ 回以下行うことで、$ A $ を $ (1,2,\ldots,N) $ にしてください。 - 操作:$ 1\leq\ i\

Input Format

入力は以下の形式で標準入力から与えられる。 > $ N $ $ A_1 $ $ \ldots $ $ A_N $

Output Format

操作回数を $ K $ として、$ K+1 $ 行出力せよ。 $ 1 $ 行目には $ K $ を出力せよ。 $ l+1 $ 行目 ($ 1\leq\ l\ \leq\ K $) には $ l $ 回目の操作で選ぶ整数 $ i,j $ を空白区切りで出力せよ。 問題文中の条件を満たすどのような出力も正解とみなされる。

Explanation/Hint

### 制約 - $ 2\ \leq\ N\ \leq\ 2\times\ 10^5 $ - $ (A_1,\ldots,A_N) $ は $ (1,2,\ldots,N) $ の並び替えである - 入力は全て整数である ### Sample Explanation 1 操作により数列は次のように変化します。 - 最初 $ A=(3,4,1,2,5) $ である。 - $ 1 $ 回目の操作で $ 1 $ 番目の要素と $ 3 $ 番目の要素を入れ替える。$ A=(1,4,3,2,5) $ になる。 - $ 2 $ 回目の操作で $ 2 $ 番目の要素と $ 4 $ 番目の要素を入れ替える。$ A=(1,2,3,4,5) $ になる。 この他、次のような出力でも正解とみなされます。 ``` 4 2 3 3 4 1 2 2 3 ```