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

В городе живут $$$n$$$ человек. Про некоторые пары людей известно, дружат они или враждуют.

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

Определите такой способ голосования, при котором будут выполняться следующие условия:

  • для каждой пары друзей $$$(a, b)$$$ верно, что человек $$$a$$$ и человек $$$b$$$ проголосовали за одну и ту же партию;
  • для каждой пары врагов $$$(c, d)$$$ верно, что человек $$$c$$$ и человек $$$d$$$ проголосовали за разные партии.

Если подходящего способа голосования не существует, сообщите об этом.

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

В первой строке следуют два целых числа $$$n$$$ и $$$m$$$ ($$$1 \le n \le 2\cdot10^{5}$$$, $$$0 \le m \le \min(2\cdot10^{5}, \frac{n(n - 1)}{2})$$$) — количество человек, живущих в городе, а также количество пар людей, про которых известно, дружат они или враждуют.

В следующих $$$m$$$ строках следуют по три целых числа $$$x$$$, $$$y$$$ и $$$t$$$ ($$$1 \le x, y \le n$$$, $$$1 \le t \le 2$$$, $$$x \neq y$$$). Если $$$t = 1$$$, то люди с номерами $$$x$$$ и $$$y$$$ дружат между собой (а значит, должны проголосовать за одну и ту же партию). Если $$$t = 2$$$, то люди с номерами $$$x$$$ и $$$y$$$ враждуют между собой (а значит, должны проголосовать за разные партии). Гарантируется, что каждая неупорядоченная пара людей $$$x$$$ и $$$y$$$ встречается во входных данных не более одного раза.

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

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

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

Примеры
Входные данные
5 4
1 5 1
2 4 1
4 3 2
1 3 1
Выходные данные
YES
1 2 1 2 1
Входные данные
3 3
1 2 1
2 3 1
3 1 2
Выходные данные
NO
Входные данные
13 10
12 7 2
9 11 1
12 8 1
6 10 1
4 3 2
2 13 1
1 5 1
9 7 1
13 1 2
3 8 1
Выходные данные
YES
1 2 1 2 1 1 2 1 2 1 2 1 2
Примечание

В первом примере люди с номерами $$$1$$$, $$$3$$$ и $$$5$$$ должны проголосовать за одну партию, а люди с номерами $$$2$$$ и $$$4$$$ за другую, так как человек $$$1$$$ дружит с $$$3$$$ и $$$5$$$, а $$$2$$$ дружит с $$$4$$$, при этом $$$3$$$ и $$$4$$$ являются врагами.

Во втором примере невозможно проголосовать способом, который описан в условии, так как человек $$$2$$$ дружит с $$$1$$$ и $$$3$$$, поэтому все они должны голосовать за одну и ту же партию. Но $$$1$$$ и $$$3$$$ — враги, поэтому должны голосовать за разные партии. Получаем противоречие, поэтому ответ на этот пример «NO».