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

Задача . G. Освещение


В конце дня Анне нужно выключить свет в офисе. Есть \(n\) ламп и \(n\) выключателей, но схема их работы довольно странная. Выключатель \(i\) меняет состояние лампы \(i\), но также меняет состояние другой лампы \(a_i\) (изменение состояния означает, что если лампа была включена, она выключается, и наоборот).

Помогите Анне выключить все лампы, используя минимальное количество выключателей, или скажите, что это невозможно.

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

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

Первая строка каждого набора содержит целое число \(n\) (\(2 \le n \le 10^5\)) — количество ламп.

Вторая строка каждого набора содержит строку из \(n\) символов — начальное состояние ламп. Символ «0» означает, что соответствующая лампа выключена, а «1» означает, что она включена.

Третья строка каждого набора содержит \(n\) целых чисел \(a_i\) (\(1 \le a_i \le n\), \(a_i \neq i\)) — выключатель \(i\) меняет состояние лампы \(i\) и лампы \(a_i\).

Гарантируется, что сумма \(n\) по всем наборам не превышает \(2 \cdot 10^5\)

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

Для каждого набора входных данных выведите целое число \(k\) — минимальное количество выключателей, которое нужно использовать, затем в отдельной строке выведите список из \(k\) выключателей.

Если невозможно выключить все лампы, выведите одно целое число \(-1\).


Примеры
Входные данныеВыходные данные
1 8
5
11101
4 3 4 2 2
2
10
2 1
10
0000000011
9 10 10 7 10 9 9 9 10 2
10
1000111101
9 3 8 9 2 1 3 7 2 7
10
0001101010
5 7 6 10 8 3 6 6 2 2
10
0101100010
8 7 7 9 9 4 1 4 2 7
10
1010111010
7 9 10 7 7 2 8 6 10 4
10
1110000001
3 10 10 1 10 8 6 3 2 1
3
1 5 3 
-1
1
9 
5
5 6 10 2 3 
6
4 9 5 10 8 7 
3
5 4 9 
6
1 3 5 9 7 8 
2
2 1

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

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