I. Покраска дерева
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

У Монокарпа есть дерево, состоящее из $$$n$$$ вершин, $$$n$$$ — четно. Дерево — это связный граф, не содержащий циклов.

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

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

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

В первой строке следует целое четное число $$$n$$$ ($$$2 \le n \le 200\,000$$$) — количество вершин в дереве.

В каждой из следующих $$$n - 1$$$ строк следуют по два целых числа $$$u$$$ и $$$v$$$ ($$$1 \le u, v \le n$$$) — описание ребер дерева. Гарантируется, что заданные ребра образуют дерево.

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

Если не существует ни одной подходящей раскраски дерева, выведите «NO» (без кавычек).

В противном случае, в первую строку выведите «YES» (без кавычек). Во вторую строку выведите $$$n$$$ целых чисел $$$0$$$ или $$$1$$$, причем $$$i$$$-е число равно $$$0$$$, если $$$i$$$-ю вершину нужно покрасить в белый цвет, и $$$i$$$-е число равно $$$1$$$, если $$$i$$$-ю вершину нужно покрасить в черный цвет. Если подходящих ответов несколько, выведите любой.

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

В первом примере можно покрасить вершины $$$1$$$, $$$2$$$ и $$$3$$$ в белый цвет, а вершины $$$4$$$, $$$5$$$ и $$$6$$$. Тогда будет ровно одно ребро, которое соединяет разноцветные вершины, это ребро между вершинами $$$2$$$ и $$$4$$$.

Во втором примере не существует ни одной подходящей раскраски.