E. Связные компоненты?
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Дан неориентированный граф, состоящий из n вершин и ребер. Вместо того, чтобы задавать ребра, которые присутствуют в графе, мы даем m неупорядоченных пар (x, y) таких, что между вершинами x и y не существует ребра, и если пара вершин не встречается во входных данных, то в графе есть ребро между ними.

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

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

В первой строке записаны два целых числа n и m (1 ≤ n ≤ 200000, ).

Затем идут m строк, каждая содержит пару целых чисел x и y (1 ≤ x, y ≤ n, x ≠ y), означающую, что не существует ребра между x и y. Каждая пара присутствует во входных данных не более одного раза; (x, y) и (y, x) считаются одинаковыми (они так же никогда не встретятся одновременно в одном тесте). Если какая-то пара вершин не упомянута, то между этими вершинами есть ребро.

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

Сначала выведите k — количество связных компонент в графе.

Затем выведите k чисел — размеры компонент. Эти числа должны идти в неубывающем порядке.

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