D. Продуктивная встреча
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

На встрече собрались $$$n$$$ человек. В каждый момент времени любые два человека могут отойти и поговорить наедине. Одни и те же два человека могут поговорить несколько (сколько угодно) раз за встречу.

У каждого человека есть ограниченная общительность. Общительность $$$i$$$-го человека равна неотрицательному целому числу $$$a_i$$$. Это означает, что после $$$a_i$$$ личных разговоров этот человек уходит со встречи (и больше ни с кем не разговаривает). Если $$$a_i = 0$$$, $$$i$$$-й человек уходит со встречи сразу после ее начала.

Встреча считается тем более продуктивной, чем больше в течение нее состоялось разговоров.

По данному массиву общительности $$$a$$$ определите, какие люди должны разговаривать друг с другом, чтобы суммарное количество разговоров было как можно больше.

Входные данные

В первой строке записано целое число $$$t$$$ ($$$1 \le t \le 1000$$$) — количество наборов входных данных.

В следующих $$$2t$$$ строках даны описания наборов входных данных.

В описании каждого набора данных первая строка содержит целое число $$$n$$$ ($$$2 \le n \le 2 \cdot 10^5$$$) — количество людей на встрече, а во второй строке через пробел перечислены $$$n$$$ целых чисел $$$a_1, a_2, \dots, a_n$$$ ($$$0 \le a_i \le 2 \cdot 10^5$$$) — параметры общительности всех людей.

Гарантируется, что сумма $$$n$$$ по всем наборам входных данных не превосходит $$$2 \cdot 10^5$$$. Также гарантируется, что сумма всех $$$a_i$$$ (по всем наборам входных данных и всем $$$i$$$) не превосходит $$$2 \cdot 10^5$$$.

Выходные данные

Выведите $$$t$$$ ответов на все наборы входных данных.

В первой строке ответа выведите число $$$k$$$ — максимальное количество разговоров, которое возможно провести за встречу.

В каждой из следующих $$$k$$$ строк выведите через пробел по два целых числа $$$i$$$ и $$$j$$$ ($$$1 \le i, j \le n$$$ и $$$i \neq j$$$) — номера людей, между которыми состоится очередной разговор.

Если ответов несколько, выведите любой из них.

Пример
Входные данные
8
2
2 3
3
1 2 3
4
1 2 3 4
3
0 0 2
2
6 2
3
0 0 2
5
8 2 0 1 1
5
0 1 0 0 6
Выходные данные
2
1 2
1 2
3
1 3
2 3
2 3
5
1 3
2 4
2 4
3 4
3 4
0
2
1 2
1 2
0
4
1 2
1 5
1 4
1 2
1
5 2