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

Задача . G. Перевороты столбцов


Вам дана таблица \(a\) размера \(2 \times n\) (из двух строк и \(n\) столбцов), состоящая из целых чисел от \(1\) до \(n\).

За один ход вы можете выбрать какой-то столбец \(j\) (\(1 \le j \le n\)) и обменять местами значения \(a_{1, j}\) и \(a_{2, j}\). Каждый столбец может быть выбран не более одного раза.

Ваша задача — найти минимальное количество ходов, необходимое для того, чтобы получить перестановки размера \(n\) в первой и во второй строках, или же определить, что это сделать невозможно.

Вам необходимо ответить на \(t\) независимых наборов тестовых данных.

Напомним, что перестановкой размера \(n\) называется такой массив размера \(n\), который содержит каждое целое число от \(1\) до \(n\) ровно один раз (порядок элементов не важен).

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

Первая строка входных данных содержит одно целое число \(t\) (\(1 \le t \le 2 \cdot 10^4\)) — количество наборов тестовых данных. Затем следуют \(t\) наборов тестовых данных.

Первая строка набора тестовых данных содержит одно целое число \(n\) (\(1 \le n \le 2 \cdot 10^5\)) — количество столбцов в таблице. Вторая строка набора входных данных содержит \(n\) целых чисел \(a_{1, 1}, a_{1, 2}, \dots, a_{1, n}\) (\(1 \le a_{1, i} \le n\)), где \(a_{1, i}\) — это \(i\)-й элемент первой строки таблицы. Третья строка набора входных данных содержит \(n\) целых чисел \(a_{2, 1}, a_{2, 2}, \dots, a_{2, n}\) (\(1 \le a_{2, i} \le n\)), где \(a_{2, i}\) — это \(i\)-й элемент второй строки таблицы.

Гарантируется, что сумма \(n\) не превосходит \(2 \cdot 10^5\) (\(\sum n \le 2 \cdot 10^5\)).

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

Выведите ответ на каждый набор тестовых данных: -1, если невозможно получить перестановки размера \(n\) в первой и второй строках таблицы, или же одно целое число \(k\) в первой строке, где \(k\) равно минимальному количеству ходов, необходимому для получения перестановок в обеих строках, а затем \(k\) различных целых чисел \(pos_1, pos_2, \dots, pos_k\) во второй строке (\(1 \le pos_i \le n\)) в любом порядке — индексы столбцов, в которых вам необходимо обменять значения местами для получения перестановок в обеих строках. Если существует несколько ответов, выведите любой.


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

2
2 3 
1
1 
2
3 4 
2
3 4 
-1

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

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