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

Задача . C. Двойная сортировка


Заданы два массива \(a\) и \(b\), оба состоящие из \(n\) целых чисел.

За один ход можно выбрать две позиции \(i\) и \(j\) (\(1 \le i, j \le n\); \(i \neq j\)) и поменять местами \(a_i\) с \(a_j\) и \(b_i\) с \(b_j\). Перестановки обязательно делать в обоих массивах.

Разрешается сделать не более \(10^4\) ходов (возможно, ноль). Можете ли вы сделать оба массива отсортированными по неубыванию в конце? Если можете, то выведите любую последовательность ходов, которая делает оба массива отсортированными.

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

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

В первой строке каждого набора входных данных записано одно целое число \(n\) (\(2 \le n \le 100\)) — количество элементов в обоих массивах.

Во второй строке записаны \(n\) целых чисел \(a_1, a_2, \dots, a_n\) (\(1 \le a_i \le n\)) — первый массив.

В третьей строке записаны \(n\) целых чисел \(b_1, b_2, \dots, b_n\) (\(1 \le b_i \le n\)) — второй массив.

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

На каждый набор входных данных выведите ответ. Если невозможно сделать оба массива отсортированными по неубыванию за не более чем \(10^4\) ходов, то выведите -1. Иначе сначала выведите количество ходов \(k\) \((0 \le k \le 10^4)\). Затем выведите \(i\) и \(j\) для каждого хода \((1 \le i, j \le n\); \(i \neq j)\).

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


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

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

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