T259867 「ZHYOI-1」石头

题目背景

ZHY 觉得在家里待着太无聊了!于是他去外面找了些小石头回来。他先将它们打乱成若干堆,然后打算通过一些特殊的操作将他们全部堆到一堆。但他又不希望使用太多次操作,因为这样他会很累。请你告诉他该如何操作吧!

题目描述

ZHY 一共找来了 $2^n$ 个石头,随后将它们打乱成了 $m$ 堆,第 $i$ 堆有 $a_{i}$ 个石头。定义一次对于 $i$ 和 $j$ 的操作为从第 $j$ 堆中取 $a_{i}$ 个石头放到第 $i$ 堆里($a_i\le a_j$)。ZHY 要求在 $\dfrac {n\times m}{2}$ 次操作内将所有的石头堆到一堆里,请你告诉他任意一种满足他要求的操作方法。**可以证明一定有解。**

输入格式

第一行两个整数 $n,m$。 第二行 $m$ 个正整数,表示 $a_1,a_2,\cdots a_m$。

输出格式

第一行一个正整数 $k$,代表操作次数(必须满足 $k \le \dfrac{n \times m}{2}$)。 接下来 $k$ 行,每行两个整数 $i,j$,表示进行一次对于 $i$ 和 $j$ 的操作(必须满足 $a_i \le a_j$)。

说明/提示

对于 $40\%$ 的数据,$n,m \le 4$。 对于 $60\%$ 的数据,$n \le 20,m \le 500$。 对于 $100\%$ 的数据,$1 \le n \le 30,2 \le m \le 10^{5},0 \le a_i \le 2^n$,保证 $\sum a_{i}=2^{n}$,**可以证明一定有解**。