Компоненты связности

Дан неориентированный невзвешенный граф. Необходимо посчитать количество его компонент связности и вывести их.

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

Во входном файле записано два числа $N$ и $M$ (0 < $N$ ≤ 100000, 0 ≤ $M$ ≤ 100000). В следующих $M$ строках записаны по два числа $i$ и $j$ (1 ≤ $i$, $j$ ≤ $N$), которые означают, что вершины $i$ и $j$ соединены ребром.

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

В первой строчке выходного файла выведите количество компонент связности. Далее выведите сами компоненты связности в следующем формате: в первой строке количество вершин в компоненте, во второй - сами вершины в произвольном порядке.

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

Задача на informatics