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

Задача . A. AquaMoon и два массива


AquaMoon и Cirno играют в интересную игру с массивами. Cirno приготовил два массива \(a\) и \(b\), оба состоящих из \(n\) неотрицательных целых чисел. AquaMoon может сделать следующую операцию произвольное количество раз (возможно, ноль):

  • Она выбирает два индекса \(i\) и \(j\) (\(1 \le i, j \le n\)), затем уменьшает \(i\)-й элемент массива \(a\) на \(1\) и увеличивает \(j\)-й элемент массива \(a\) на \(1\). В результате значения на \(i\)-м и \(j\)-м индексах массива \(a\) становятся равными \(a_i - 1\) и \(a_j + 1\), соответственно. Каждый элемент массива \(a\) должен оставаться неотрицательным после операции. Если \(i = j\), эта операция никак не поменяет массив \(a\).

AquaMoon хочет сделать несколько операций, чтобы сделать массивы \(a\) и \(b\) равными. Два массива \(a\) и \(b\) называются равными, если \(a_i = b_i\) для всех \(1 \leq i \leq n\).

Помогите AquaMoon найти последовательность операций, которая решит ее задачу или установите, что невозможно сделать массивы \(a\) и \(b\) равными.

Обратите внимание, что вы не обязаны минимизировать количество операций.

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

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

Первая строка описания каждого набора входных данных содержит единственное число \(n\) (\(1 \leq n \leq 100\)).

Во второй строке описания каждого набора входных данных находятся \(n\) целых чисел \(a_1, a_2, \dots, a_n\) (\(0 \leq a_i \leq 100\)). Сумма всех \(a_i\) не превосходит \(100\).

В третьей строке описания каждого набора входных данных находятся \(n\) целых чисел \(b_1, b_2, \dots, b_n\) (\(0 \leq b_i \leq 100\)). Сумма всех \(b_i\) не превосходит \(100\).

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

Для каждого набора входных данных выведите «-1» в единственной строке, если невозможно сделать массивы равными после применения некоторой последовательности операций.

Иначе выведите целое число \(m\) (\(0 \leq m \leq 100\)) в первой строке — количество операций. Затем выведите \(m\) строк, в каждой по два целых числа \(i\) и \(j\) — индексы, которые вы выбрали для операции.

Можно доказать, что если можно сделать два массива равными с помощью некоторой последовательности операций, то существует такая последовательность с \(m \leq 100\).

Если существует несколько возможных решений, выведите любое.

Примечание

В первом наборе входных данных мы сделали следующие операции:

  • \(i = 2\), \(j = 1\): \([1, 2, 3, 4] \rightarrow [2, 1, 3, 4]\);
  • \(i = 3\), \(j = 1\): \([2, 1, 3, 4] \rightarrow [3, 1, 2, 4]\);

Во втором наборе входных данных невозможно сделать два массива равными.


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

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

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