У теорії графів компонентою двозв'язності за ребрами у графі (V, E) називається найбільша підмножина вершин S \subset V така, що для будь-яких двох різних вершин \{u, v\} \subset S існує принаймні два реберно-неперетинні шляхи між та .
Дано неорієнтований граф, необхідно знайти його компоненти реберної двозв'язності.
У першому рядку задано два цілі числа і — кількість вершин і ребер у графі відповідно (n \leq 20000, m \leq 200000). У наступних рядках кожне ребро описується двома цілими числами b_j і e_j. Це вершини, які сполучає дане ребро (1 \leq b_j, e_j \leq n).
У першому рядку виведіть одне ціле число — кількість компонент реберної двозв'язності у графі. У другому рядку виведіть цілих чисел a_1, a_2, \ldots, a_n, що не перевищують , де a_i — номер компоненти реберної двозв'язності, до якої належить -та вершина.
Приклад 1