B. Два дерева
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
128 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Максим Витальевич решил разобраться в теории графов. Он изучил некоторую теорию касательно связных неориентированных графов, однако здесь у Максима Витальевича возникли трудности.

Среди всех видов связных неориентированных графов, Максим Витальевич подробно разобрался только в деревьях. Напомним, что дерево — это связный граф, не содержащий циклов, состоящий из $$$n$$$ вершин и $$$n - 1$$$ ребер. Другие виды графов вызывают некоторые трудности, так как в них могут быть циклы, либо они могут быть несвязными.

Чтобы разобраться с более сложными видами графов, Максим Витальевич решил их представлять в виде объединения набора деревьев. Для простоты он решил ограничиться только двумя деревьями. Для того, чтобы представить граф из $$$n$$$ вершин в виде объединения двух деревьев, Максим Витальевич раскрасил каждое ребро в один из трех цветов. Далее он построил первое дерево из $$$n$$$ вершин, используя ребра, раскрашенные цветами $$$1$$$ и $$$3$$$, а второе дерево из $$$n$$$ вершин — используя ребра, раскрашенные цветами $$$2$$$ и $$$3$$$. Таким образом, если объединить два дерева, то получится исходный граф, так как каждое ребро принадлежит как минимум одному дереву.

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

Помогите Максиму Витальевичу раскрасить $$$m$$$ ребр графа из $$$n$$$ вершин в три цвета так, чтобы его можно было представить в виде двух деревьев, каждое из которых состоит из $$$n$$$ вершин.

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

В первой строке задано два целых числа $$$n$$$ и $$$m$$$ — количество вершин и ребер в исходном графе.

В следующих $$$m$$$ строках записано по два целых числа $$$x_i$$$ и $$$y_i$$$ — номера вершин, соединенных $$$i$$$-м ребром.

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

$$$$$$ 2 \le n \le 100 $$$$$$ $$$$$$ n - 1 \le m \le 200 $$$$$$ $$$$$$ 1 \le x_i, y_i \le n$$$$$$

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

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

В противном случае в первой строке выведите «Yes» (без кавычек).

Во второй строке выведите $$$m$$$ целых чисел $$$c_1$$$, $$$c_2$$$, ... $$$c_m$$$ через пробел, где $$$c_i$$$ ($$$1 \le c_i \le 3$$$) — цвет $$$i$$$-го ребра.

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

Примеры
Входные данные
4 4
1 2
1 3
1 4
2 3
Выходные данные
Yes
3 1 3 2 
Входные данные
5 10
1 2
1 3
1 4
1 5
2 3
2 4
2 5
3 4
3 5
4 5
Выходные данные
No