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

Задача . E. ВыживатеЛи


Ли приобрел некоторой еды на обед, но приглашать друзей Ли на обед смертельно опасно. Ли напуган, он не хочет умирать, хотя бы пока не увидит Online IOI 2020...

Всего есть \(n\) различных видов еды и \(m\) лучших друзей Ли. У Ли есть \(w_i\) тарелок \(i\)-го вида еды, и у каждого друга Ли есть два любимых вида еды: любимые блюда \(i\)-го друга — это \(x_i\) и \(y_i\) (\(x_i \ne y_i\)).

Ли начнет вызывать своих друзей по одному. Каждый, кого вызвали, пойдет на кухню и попытается съесть по одной тарелке каждого из его любимых видов еды. Каждый друг зайдет на кухню ровно один раз.

Но проблема в следующем: если друг съест хотя бы одну тарелку еды (суммарно), то он станет абсолютно безвреден. Но если другу нечего есть (не осталось ни \(x_i\), ни \(y_i\)), то он съест самого Ли \(\times\_\times\).

Ли может выбрать, в каком порядке приглашать друзей, а потому Ли хочет понять, может ли он пережить ужин или нет. Также его интересует непосредственно сам порядок.

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

В первой строке заданы два целых числа \(n\) и \(m\) (\(2 \le n \le 10^5\); \(1 \le m \le 2 \cdot 10^5\)) — количество видов еды и количество друзей Ли.

Во второй строке заданы \(n\) целых чисел \(w_1, w_2, \ldots, w_n\) (\(0 \le w_i \le 10^6\)) — количество тарелок с едой каждого вида.

В \(i\)-й строке из следующих \(m\) строк заданы два целых числа \(x_i\) и \(y_i\) (\(1 \le x_i, y_i \le n\); \(x_i \ne y_i\)) — любимые виды еды \(i\)-го друга.

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

Если Ли может пережить обед, выведите ALIVE (регистр букв не важен), иначе выведите DEAD (регистр не важен).

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

Примечание

В первом примере, любой из следующих порядков друзей будет корректным: \([1, 3, 2]\), \([3, 1, 2]\), \([2, 3, 1]\), \([3, 2, 1]\).

Во втором примере, Ли следует вызвать второго друга первым (тогда он съест тарелку еды \(1\)), а потом и первого друга (этот друг съесть тарелку еды \(2\)). Если же Ли вызовет сначала первого друга, то он съесть по одной тарелке еды \(1\) и \(2\), а следовательно другому другу ничего не останется.


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

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

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