#P1491G. Switch and Flip

Switch and Flip

Description

There are $n$ coins labeled from $1$ to $n$. Initially, coin $c_i$ is on position $i$ and is facing upwards (($c_1, c_2, \dots, c_n)$ is a permutation of numbers from $1$ to $n$). You can do some operations on these coins.

In one operation, you can do the following:

  • Choose $2$ distinct indices $i$ and $j$.

  • Then, swap the coins on positions $i$ and $j$.

  • Then, flip both coins on positions $i$ and $j$. (If they are initially faced up, they will be faced down after the operation and vice versa)

Construct a sequence of at most $n+1$ operations such that after performing all these operations the coin $i$ will be on position $i$ at the end, facing up.

Note that you do not need to minimize the number of operations.

The first line contains an integer $n$ ($3 \leq n \leq 2 \cdot 10^5$) — the number of coins.

The second line contains $n$ integers $c_1,c_2,\dots,c_n$ ($1 \le c_i \le n$, $c_i \neq c_j$ for $i\neq j$).

In the first line, output an integer $q$ $(0 \leq q \leq n+1)$ — the number of operations you used.

In the following $q$ lines, output two integers $i$ and $j$ $(1 \leq i, j \leq n, i \ne j)$ — the positions you chose for the current operation.

Input

The first line contains an integer $n$ ($3 \leq n \leq 2 \cdot 10^5$) — the number of coins.

The second line contains $n$ integers $c_1,c_2,\dots,c_n$ ($1 \le c_i \le n$, $c_i \neq c_j$ for $i\neq j$).

Output

In the first line, output an integer $q$ $(0 \leq q \leq n+1)$ — the number of operations you used.

In the following $q$ lines, output two integers $i$ and $j$ $(1 \leq i, j \leq n, i \ne j)$ — the positions you chose for the current operation.

Samples

3
2 1 3
3
1 3
3 2
3 1
5
1 2 3 4 5
0

Note

Let coin $i$ facing upwards be denoted as $i$ and coin $i$ facing downwards be denoted as $-i$.

The series of moves performed in the first sample changes the coins as such:

  • $[~~~2,~~~1,~~~3]$
  • $[-3,~~~1,-2]$
  • $[-3,~~~2,-1]$
  • $[~~~1,~~~2,~~~3]$

In the second sample, the coins are already in their correct positions so there is no need to swap.