F. Уроки дизайна задач: меняем цель задачи
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Существуют задачи со следующей структурой: вам дана модель, и вы можете выполнять некоторые операции, эти операции надо использовать для достижения определенной цели. Один из способ создания задач — использовать прежнюю модель и прежние операции, но поменять цель задачи.

Давайте попробуем. Как-то раз я придумал следующую сложную задачу для Topcoder SRM 557. Вам даны n целых чисел x1, x2, ..., xn. Разрешено выполнять сколько угодно присвоений следующего вида: xi ^= xj (в изначальной задаче i и j должны были быть различными, но в этой задаче мы позволим i равняться j). Ваша задача — максимизировать сумму всех xi.

Теперь мы просто меняем цель. Дополнительно вам заданы n целых чисел y1, y2, ..., yn. Вы должны добиться того, чтобы x1, x2, ..., xn в точности равнялись y1, y2, ..., yn. Иными словами, для каждого i число xi должно равняться yi.

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

В первой строке записано целое число n (1 ≤ n ≤ 10000). Во второй строке записано n целых чисел: x1, x2, ..., xn (0 ≤ xi ≤ 109). В третьей строке записано n целых чисел: y1, y2, ..., yn (0 ≤ yi ≤ 109).

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

Если решения не существует, выведите -1.

Если решение существует, то выведите в первой строке целое число m (0 ≤ m ≤ 1000000) — количество присвоений, которые надо выполнить. Затем выведите m строк, в каждой строке должно быть записано два целых числа i и j (1 ≤ i, j ≤ n), которые обозначают присвоение xi ^= xj.

Если существует несколько решений, разрешается вывести любое. Можно доказать, что при этих ограничениях если существует решение, то всегда существует решение с не более 106 операциями.

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

Присвоение a ^= b обозначает присвоение a = a ^ b, где операция «^» является побитовым XOR двух целых чисел.