F. Разработка тарифов
ограничение по времени на тест
6 секунд
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Мэр города М. решил в 2020 году запустить несколько новых веток метро. Поскольку бюджет города сильно ограничен, он принял решение не копать новые туннели, а воспользоваться уже существующей подземной сетью.

Туннельная система города М. состоит из $$$n$$$ станций метро. Станции соединены между собой двунаправленными туннелями, которых всего $$$n - 1$$$. Между любыми станциями $$$v$$$ и $$$u$$$ есть ровно один простой путь. Каждая ветка метро, которую хочет создать мэр, является простым путём от станции $$$a_i$$$ до станции $$$b_i$$$. Ветки могут пересекаться, то есть иметь общие станции или туннели. Однако, ещё не решено, в какую из двух сторон будут следовать поезда на каждой из веток. А именно, на пути между станциями $$$a_i$$$ и $$$b_i$$$ поезда будут следовать либо от станции $$$a_i$$$ к станции $$$b_i$$$, либо от станции $$$b_i$$$ к станции $$$a_i$$$, но только в одну из сторон.

В городе $$$M$$$ действует особая система тарифов. Каждой станции присваивается целое положительное число $$$c_i$$$ — тарифная зона станции, а стоимость переезда от станции $$$v$$$ до станции $$$u$$$ определяется как $$$c_u - c_v$$$ бурлей. Разумеется, такой переезд разрешен, только если есть ветка метро, по которой поезда идут из $$$v$$$ в $$$u$$$. Мэр города не хочет, чтобы между какими-то двумя станциями на одной ветке стоимость проезда была отрицательной, поэтому было принято решение выбрать направления движения поездов по веткам и изменить тарифные зоны всех станций города таким образом, чтобы на каждой ветке тарифные зоны станций строго возрастали, если рассмотреть её в сторону движения поездов.

Мэр сначала хочет присвоить каждой станции тарифную зону, а потом выбрать направления всех веток метро, чтобы вдоль каждой ветки тарифные зоны строго возрастали. В связи со скорым наступлением дня города, из всех возможных вариантов назначения тарифных зон мэр хочет выбрать то, где максимальное $$$c_i$$$ будет как можно меньше. Помогите мэру составить новое распределение, или скажите, что это невозможно. Обратите внимание, от вас требуется только назначить тарифные зоны оптимальным образом, а направления для веток выводить не требуется. Таким образом, ваше решение считается верным, если существует способ выбрать направление следования поездов на каждой ветке так, чтобы вдоль всех веток тарифные зоны строго возрастали.

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

Первая строка содержит целые числа $$$n$$$, $$$m$$$ ($$$2 \le n, \le 500\,000,\ 1 \le m \le 500\,000$$$) — количество станций в городе и количество веток метро.

Каждая из следующих $$$n-1$$$ строк описывает очередной туннель метро. Каждый туннель задаётся целыми числами $$$v_i$$$, $$$u_i$$$ ($$$1 \le v_i,\ u_i \le n$$$, $$$v_i \ne u_i$$$). Гарантируется, что между любыми двумя станциями есть ровно один простой путь.

Каждая из следующих $$$m$$$ строк описывает очередную ветку метро. Каждая ветка задаётся целыми числами $$$a_i$$$, $$$b_i$$$ ($$$1 \le a_i,\ b_i \le n$$$, $$$a_i \neq b_i$$$).

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

В первой строке выведите целое число $$$k$$$ — максимальный номер тарифной зоны.

В следующей строке выведите числа $$$c_1, c_2, \ldots, c_n$$$ ($$$1 \le c_i \le k$$$)  — тарифные зоны станций.

Если существует несколько ответов, выведите любой из них. Если же не существует ни одного способа назначить тарифные зоны, выведите «-1».

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

В первом примере ветка $$$1 \rightarrow 3$$$ проходит по станциям в порядке 1, 2, 3. При таком порядке посещения станций их тарифные зоны возрастают. Поскольку на этой ветке 3 станции, то нам потребуется как минимум 3 тарифные зоны. Таким образом, ответ 1, 2, 3 оптимален.

Во втором примере ни одно распределение тарифных зон не согласуется с ветками метро.