#XMOJ11358. 不再凹凸

不再凹凸

说明

时间限制:1 Sec 内存限制:256 MB 输入文件no.in 输出文件no.out

【定义】

一个三元组 $(a,b,c)$ 是凹凸三元组,当且仅当 $a,b,c$ 两两不等并且 $b$ 是最大的或是最小的。

【问题描述】

给定一个长度为 $N$ 的数列 $A$,数列下标从 $0$ 起始,你可以重复执行以下操作:

- 交换数列中第 $u$ 个元素和第 $v$ 个元素($0 \leq u,v < N$,且 $u \neq v$)。

通过重复上述操作,使得操作后的数列 $A$ 中不存在任何连续的子序列是凹凸三元组。

若操作后的数列中存在某个 $i$,使得 $A_i, A_{i+1}, A_{i+2}$ 构成凹凸三元组,则判定为答案错误。

输入格式

第一行输入数列长度 $N$;

第二行输入数列 $A$ 的各个元素,以空格分隔。

输出格式

第一行输出操作次数 $M$,要求 $0 \le M \le 100000$;

从第二行开始,每行输出一次操作的 $u$ 和 $v$($0 \leq u,v < N$,且 $u \neq v$)。

样例

样例 1

3
1 3 2

2
0 1
1 2

样例说明:

数列变化过程:[1,3,2][3,1,2][3,2,1][1,3,2] \rightarrow [3,1,2] \rightarrow [3,2,1],最终数列中不存在凹凸三元组。

样例 2

6
1 3 2 2 3 1

1
1 5

样例说明:

数列变化过程:[1,3,2,2,3,1][1,1,2,2,3,3][1,3,2,2,3,1] \rightarrow [1,1,2,2,3,3],最终数列中不存在凹凸三元组。

样例 3

10
1 2 3 4 5 6 7 8 9 10

0

样例说明:

原数列本身就不包含任何凹凸三元组,因此无需执行任何交换操作。

数据范围

对于 20% 的数据,$N \le 10$。

对于 100% 的数据,$3 \leq N \leq 100$,$1 \leq A_i \leq 100$。