D. Отметки на городах
ограничение по времени на тест
3 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Олег живет в стране Банкополии. В стране n городов, некоторые пары городов соединены двунаправленными дорогами. Города пронумерованы от 1 до n. Всего в Банкополии m дорог, дорога номер i соединяет города ui и vi. Гарантируется. что из любого города можно добраться в любой другой по дорогам.

Олег хочет отметить целым числом каждый город. Предположим. отметка города i равна xi. Тогда для любой пары городов (u, v) условие |xu - xv| ≤ 1 должно выполняться тогда и только тогда, когда есть дорога, соединяющая u и v.

Олег задумался над вопросом, возможно ли так отметить города. Расставьте корректно отметки городам, или найдите, что это невозможно.

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

Первая строка содержит два целых числа n и m (2 ≤ n ≤ 3·105, 1 ≤ m ≤ 3·105) — число городов и число дорог.

Далее следуют m строк. Строка i содержит два целых числа ui и vi (1 ≤ ui, vi ≤ n, ui ≠ vi) — города. соединяемые i-й дорогой. Гарантируется, что между каждой парой городов есть не более чем одна дорога, и что от каждого города можно добраться до любого другого по дорогам.

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

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

Иначе выведите «YES» (без кавычек) в первой строке. Во второй строке выведите n целых чисел x1, x2, ..., xn. Должно выполняться 1 ≤ xi ≤ 109 для всех i, кроме того, для любой пары (u, v) условие |xu - xv| ≤ 1 должно выполняться тогда и только тогда, когда есть дорога, соединяющая u и v.

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

В первом примере x1 = 2, x2 = 3, x3 = x4 = 1 — корректная расстановка отметок. Действительно, (3, 4), (1, 2), (1, 3), (1, 4) — пары городов, разница отметок на которых не превосходит 1, и именно эти пары городов соединяются дорогами Банкополии.

Во втором примере разница отметок между любой парой городов не превосходит 1, все пары городов соединены дорогами.

В последнем примере невозможно расставить отметки так, чтобы удовлетворить условию.