Beatriz 总是很喜欢阅读,所以她决定开一家书店,这样她整天都能有书相伴。她希望确保书架上的书摆放得井井有条,以便吸引更多的顾客。
在书店的一个大书架上,有一排共 $N$ 堆书,从左到右依次编号为 $1$ 到 $N$。第 $i$ 堆书包含 $A_i$ 本书。Beatriz 希望书的数量呈非降序排列,即对于 $i = 1, 2, \dots, N - 1$,满足 $A_i \le A_{i+1}$。这可能需要对书籍进行一些重新排列。
然而,Beatriz 很懒,她实在不想自己整理这些书。于是她向她最好的朋友 Bernardo 寻求帮助。他们约定,Beatriz 将给 Bernardo 发送一系列指令。在每条指令中,Beatriz 会指定两堆不同的书 $i$ 和 $j$,然后 Bernardo 会将这两堆书中总共 $s = A_i + A_j$ 本书取出来,并尽可能均匀地重新分配到这两堆中。这意味着在执行该指令后,这两堆书的数量将按以下方式更新:
$$A_i = \left\lfloor \frac{s}{2} \right\rfloor, \quad A_j = \left\lceil \frac{s}{2} \right\rceil$$
Beatriz 不想让 Bernardo 花费太多时间帮她搬书。她希望通过一个包含最多 $10^5$ 条指令的序列来达到所需的非降序排列。但是,Beatriz 也不想自己去想这些指令。你能帮她设计一个有效的指令序列吗?
输入格式
第一行包含一个整数 $N$($2 \le N \le 5000$),表示书架上书堆的数量。每堆书由 $1$ 到 $N$ 之间的一个唯一整数标识。
第二行包含 $N$ 个整数 $A_1, A_2, \dots, A_N$($1 \le A_i \le 10^5$),其中 $A_i$ 是第 $i$ 堆书的初始数量。
输出格式
第一行必须包含一个整数 $k$($0 \le k \le 10^5$),表示要执行的指令数量。
接下来的 $k$ 行中,每行必须包含两个整数 $i$ 和 $j$($1 \le i, j \le N$ 且 $i \neq j$),描述一条指令,表示对第 $i$ 堆和第 $j$ 堆书进行如上所述的重新分配。在按照输出中出现的顺序执行完所有指令后,书架上的书堆必须按非降序排列。
可以证明,在给定的约束条件下,一定存在有效的解。如果存在多个解,输出其中任意一个即可;不需要使 $k$ 最小。
样例
输入样例 1
3 1 1 1
输出样例 1
0
说明 1
由于书架初始时就已经按非降序排列,因此一个空的指令序列也是一个有效的输出。
输入样例 2
3 1 1 1
输出样例 2
3 1 2 1 2 2 3
说明 2
虽然书架初始时已经排好序,但该输出仍然是有效的,因为在执行了最多 $10^5$ 条指令后,书架最终仍保持有序。不需要使指令数量最小化。
输入样例 3
5 14 7 13 8 15
输出样例 3
3 2 1 1 4 3 4
说明 3
第一条指令($i = 2, j = 1$)将书架状态从 $[14, 7, 13, 8, 15]$ 变为 $[11, 10, 13, 8, 15]$。
第二条指令($i = 1, j = 4$)将书架状态从 $[11, 10, 13, 8, 15]$ 变为 $[9, 10, 13, 10, 15]$。
第三条指令($i = 3, j = 4$)将书架状态从 $[9, 10, 13, 10, 15]$ 变为 $[9, 10, 11, 12, 15]$,此时书架已按非降序排列。