Олимпиадный тренинг

Задача . B. Сделайте массив хорошим


Массив \(b\) из \(m\) положительных целых чисел называется хорошим, если для всех пар \(i\) и \(j\) (\(1 \leq i,j \leq m\)), значение \(\max(b_i,b_j)\) делится на \(\min(b_i,b_j)\).

Вам дан массив \(a\) из \(n\) положительных целых чисел. Вы можете выполнять следующую операцию:

  • Выберите индекс \(i\) (\(1 \leq i \leq n\)) и целое число \(x\) (\(0 \leq x \leq a_i\)), затем добавьте \(x\) к \(a_i\). Другими словами, \(a_i := a_i+x\).
  • После этой операции должно выполняться \(a_i \leq 10^{18}\).

Постройте последовательность из не более чем \(n\) операций, после которой массив \(a\) будет хорошим. Можно показать, что в ограничениях задачи такая последовательность операций всегда существует.

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

Каждый тест состоит из нескольких наборов входных данных. В первой строке находится одно целое число \(t\) (\(1 \leq t \leq 10^4\)) — количество наборов входных данных. Далее следует описание наборов входных данных.

Первая строка каждого набора входных данных содержит одно целое число \(n\) (\(1 \leq n \leq 10^5\)) — длину массива \(a\).

Вторая строка каждого набора содержит \(n\) целых чисел \(a_1,a_2,\ldots,a_n\) (\(1 \leq a_i \leq 10^9\)) — массив \(a\).

Гарантируется, что сумма значений \(n\) по всем наборам входных данных не превосходит \(10^5\).

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

Для каждого набора входных данных сначала выведите целое число \(p\) (\(0 \leq p \leq n\)) — количество операций в вашем решении.

Для каждой из следующих \(p\) строк, выведите два целых числа через пробел — \(i\) и \(x\).

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

Примечание

В первом примере массив \(a\) становится после операций равным \([5,5,5,5]\). Легко видеть, что \([5,5,5,5]\) — хороший.

Во втором примере массив \(a\) изначально хороший.

В третьем примере массив \(a\) становится после операций равным \([10,5,350,5,10]\), что является хорошим массивом.

В четвертом примере после выполнения операций массив \(a\) становится равным \([60,10,20]\), что является хорошим массивом.


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

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя