B. Леха и другая игра про графы
ограничение по времени на тест
3 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Лехе надоело играть с полным графом, который ему подарили в прошлый раз. Теперь он проходит компьютерную игру, где на каждом уровне ему сначала выдается связный неориентированный граф из n вершин и m ребер. Граф может содержать кратные ребра, но не содержит петель. Далее для каждой вершины задается число di, которое может равняться 0, 1 или  - 1. Чтобы пройти уровень, нужно найти любое «хорошее» подмножество ребер графа или сообщить, что его не существует. Подмножество называется «хорошим», если оставив в исходном графе только ребра из него, то для каждой вершины i будет верно, что di =  - 1 или ее степень по модулю 2 равна di. Леха хотел бы поскорее пройти игру до конца и похвастаться своим друзьям, поэтому он просит Вашей помощи.

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

Первая строка содержит два целых числа n, m (1 ≤ n ≤ 3·105, n - 1 ≤ m ≤ 3·105) — число вершин и ребер соответственно.

Вторая строка содержит n целых чисел d1, d2, ..., dn ( - 1 ≤ di ≤ 1) — значения на вершинах.

Каждая из следующих m строк содержит два целых числа u и v (1 ≤ u, v ≤ n) — описание ребер. Гарантируется, что граф во входных данных является связным.

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

Выведите  - 1 в единственной строке, если решения не существует. Иначе в первой строке выведите целое число k — количество рёбер в ответе. В следующих k строках номера ребер в подмножестве. Ребра нумеруются в порядке ввода, начиная с 1.

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

В первом примере у нас есть одна вершина без рёбер. Её степень 0 и получить 1 не получится.