Koishi擅自给懒鱼的家门口上了一道锁,现在懒鱼没法回家了。为了回家,懒鱼需要想办法解开这把锁。
具体来说,这把锁上有一列有 $n$ ($1\le n \le 10^3$)个滑块,最初处于解锁状态时,第 $i$ 个位置上的滑块标有数字 $i$。Koishi随意打乱了这些滑块之后,锁定了这把锁。此时,第 $i$ 个位置上的滑块标有的数字变成了 $a_i$,此时所有 $a_i$ 恰好组成一个 $1\sim n$ 的排列。
锁定这把锁之后,你每次可以选择两个位置上的滑块,记其所在位置为 $l,r$($l<r$),并将其交换,但需要满足两个奇怪的性质:
当对于所有 $i\in [1,n]$,第 $i$ 个位置上滑块上标有数字 $i$ 时,锁就再次恢复解锁状态,懒鱼就可以回家了。
然而,由规则可知,这把锁的解锁没有什么试错机会,因此懒鱼希望你能够写一个程序,直接输出正确的操作过程。
当然,也许实际上这把锁根本没法解锁,此时请你也务必告知懒鱼。
第一行一个正整数 $n$($1\le n\le 10^3$),表示滑块个数。
第二行一行 $n$ 个正整数,第 $i$ 个正整数 $a_i$($1\le a_i\le n$)表示从左到右第 $i$ 个滑块上标有的数字。保证所有的 $a_i$ 恰好组成一个 $1\sim n$ 的排列。
若这把锁无法解锁,输出一行一个整数 $-1$。
否则,第一行输出一个自然数 $k$($0\le k \le 2\times 10^4$),表示你接下来会执行的操作个数。可以证明,若这把锁可以解锁,则 $2\times 10^4$ 步以内必定能解锁。
接下来 $k$ 行,每行两个正整数 $l,r$($1\le l < r \le n$),表示选择交换的两个滑块。
5
1 5 2 4 3
6
1 4
1 2
4 5
1 5
3 4
2 4
Author:一只懒懒懒懒懒鱼