Logo Universal Online Judge

UOJ

时间限制:1 s 空间限制:256 MB
Statistics

题目描述
你有一个长度为 n的数组$a_1,a_2,...,a_n$ ,其中n 为偶数,你可以进行如下操作:
选择两个数$i ,j(i \neq; j,1<=i,j<=n)$,将$a_i,a_j$ 都替换为$a_i * a_j$ 构造一种操作方案,在不超过$10^6$ 步内,使得a1=a2=a3=...=an 。
输入格式
第一行:一个整数n 。
第二行:n 个整数 $a_1,a_2,...,a_n$ 。
输出格式
第一行:一个整数 m,代表操作的个数,需要保证 $0<=m<=10^6$。
接下来m 行:每行两个整数i,j ,表示一次操作,需要保证$i \neq; j,1<=i,j<=n$ 。
可以输出任意合法方案。
样例 1 输入

2
2 3
样例 1 输出

1
1 2
样例 2 输入

4
1 2 4 8
样例 2 输出

2
1 4
2 3
因为某些原因,本题不提供大样例,但你可以用下发的 chk.cpp 检验你的代码。
数据范围
对于 100%的数据,2<=n<=40000 ,n 为偶数, $1<=a_i<=10^6$。
Subtask1(10%): n<=4;
Subtask1(20%): n<=6;
Subtask1(30%): n<=1000;
Subtask1(20%): ai只有两种不同的值;
Subtask1(20%):无特殊限制。