B. Инверсия бинарной строки
ограничение по времени на тест
1.5 секунд
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Вам дана бинарная строка $$$s$$$ длиной $$$n$$$. Вы можете выполнить следующую операцию над строкой:

  • Выберите индекс $$$i$$$ и инвертируйте биты на всех других индексах, кроме индекса $$$i$$$. Другими словами, выберите целое число $$$i$$$ ($$$1 \le i \le n$$$), и для всех $$$j$$$, таких что $$$1 \le j \le n$$$ и $$$j \ne i$$$, если $$$s_j = 0$$$, то установите $$$s_j:=1$$$, в противном случае установите $$$s_j:=0$$$.

Вы можете выполнить операцию любое количество раз, но каждый индекс может быть выбран не более чем один раз.

Ваша задача состоит в том, чтобы сделать все биты в строке $$$s$$$ равными $$$0$$$, или сообщить, что это невозможно. Вам не нужно минимизировать количество операций.

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

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

Первая строка каждого набора входных данных содержит одно целое число $$$n$$$ ($$$1 \le n \le 2 \cdot 10^5$$$).

Вторая строка каждого набора входных данных содержит бинарную строку $$$s$$$ длиной $$$n$$$.

Гарантируется, что сумма $$$n$$$ по всем наборам входных данных не превосходит $$$2 \cdot 10^5$$$.

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

Для каждого набора входных данных выведите $$$-1$$$, если невозможно преобразовать все биты в $$$0$$$. В противном случае выведите две строки в следующем формате:

  • В первой строке выведите количество операций $$$x$$$ ($$$0 \leq x \leq n$$$).
  • Во второй строке каждого набора входных данных выведите $$$x$$$ чисел – индексы, которые вы выбираете на каждой операции, по порядку. Вы должны гарантировать, что каждый индекс будет выбран не более одного раза.

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

Пример
Входные данные
4
3
101
3
100
4
0000
4
1010
Выходные данные
1
2
-1
0
2
1 3
Примечание

В первом наборе входных данных выполнение операции на индексе $$$2$$$ означает инверсию битов на индексах $$$1$$$ и $$$3$$$. Таким образом, новая строка будет $$$000$$$.

Во втором наборе входных данных можно показать, что мы не можем сделать строку $$$a$$$ равной $$$000$$$, используя описанные операции.