Отряд клонов

Ограничение по времени: 2.000 секунд

Ограничение по памяти: 100.000 мегабайт

Отряд из x клонов пробрался на корабль "Звезда смерти", чтобы помочь Люку Скайуокеру в битве с Дартом Вейдером. Корабль состоит из n помещений и m двунаправленных переходов между ними. Клоны оказались в помещении 1 и планируют пробраться в помещение n, где находится Люк. Однако каждое помещение охраняется дроидами, i-е помещение охраняют ai дроидов. При появлении в помещении повстанцев происходит сражение. Если численность отряда клонов больше численности отряда дроидов, то все дроиды будут убиты, а клоны не понесут потерь. В противном случае клоны также уничтожат всех дроидов, но потеряют половину состава: если в момент начала сражения было x клонов, то в конце останется x/2, округление вниз. Клонам придется сразиться с дроидами во всех помещениях, в которых они побывают, включая помещения 1 и n. Помогите командиру отряда понять, какое максимальное количество клонов сможет добраться из помещения 1 до помещения n.

Формат входных данных

В первой строке заданы два целых числа n и m - количество помещений и количество переходов на "Звезде смерти" (1 ⩽ n,m ⩽ 2 * 105). В следующих m строках описаны переходы: i-й переход задаётся двумя целыми числами ui и vi - номерами помещений, которые соединяет переход (1 ⩽ ui, vi ⩽ n, ui ≠ vi). Гарантируется, что каждая пара помещений соединена не более чем одним переходом. На следующей строке записано целое число x - численность отряда клонов, пробравшихся на корабль (1 ⩽ x ⩽ 109). В последней строке заданы n целых чисел a1, a2, ..., an - численности отрядов дроидов в помещениях (1 ⩽ ai ⩽ 109).

Формат выходных данных

Выведите единственное число - максимальное количество клонов, которые могут добраться до помещения n, начав движение из помещения 1. Если не существует маршрута, при движении по которому в живых останется хотя бы один клон, выведите 0.

Пример

input output
4 4
1 2
1 3
2 4
3 4
7
10 2 3 1
3
4 4
1 2
1 3
2 4
3 4
7
10 3 3 1
0
Войдите, что бы отправлять решения