13070. Хакери
У мережі компанії \(msoft\) \(N\) серверів, які використовують операційну систему \(ld\). Деякі з них з'єднані двосторонніми каналами зв'язку. Мережа називається надійною, якщо між двома будь-якими різними серверами знайдеться який-небудь маршрут, що складається з одного або кількох каналів зв'язку. Однак мережа, в якій взагалі немає серверів, надійною не вважається.
Наші доблесні хакери хочуть наочно продемонструвати компанії \(msoft\) помилку в останній версії \( ld\) (природно, без згоди компанії \(msoft\)). А саме, якщо в мережі вирубати кілька серверів таким чином, що частина мережі, що залишилася, стане ненадійною, то всі сервери мережі, що залишилися, різко виснуть.
Оскільки атакувати сервера битими пакетами таким чином, щоб він вирубався - заняття вкрай важке, то хакери хочуть вирубати мінімально можливу кількість серверів таким чином, щоб усі інші повисли.
Напишіть програму, яка визначає мінімальну кількість серверів, які потрібно атакувати.
Формат вхідних даних
У першому рядку задані два числа \(N\) і \(M\) (\(1\le N\le 50\), \(0\le M\le 100\)).
Далі йдуть \(M\) рядків, що описують пари серверів, з'єднані каналами зв'язку. Кожен канал описується рядком з двох чисел \(u_i\) \(v_i\), де \(1\le u_i, v_i\le N\) -- номери серверів, з'єднаних \(i\)-м каналом. Два сервери можуть бути з'єднані більш ніж одним каналом.
Формат вихідних даних
У першому рядку виведіть мінімальну кількість серверів \(K\), які потрібно вирубати, щоб всі, хто залишився, повисли через помилку в \(ld\).
У другому рядку виведіть номери серверів, які необхідно вирубати, у довільному порядку. Якщо оптимальних рішень кілька, дозволяється виводити будь-яке. Якщо вихідна мережа \(msoft\) є ненадійною, виведіть число 0.
Приклад вхідних даних
1 0
Приклад вихідних даних
1
1
Приклад вхідних даних
2 1
1 2
Приклад вихідних даних
2
2 1
Приклад вхідних даних
4 4
1 2
2 3
3 4
4 1
Приклад вихідних даних
2
1 3
Приклад вхідних даних
7 6
1 2
2 3
1 4
4 5
1 6
6 7
Приклад вихідних даних
1
4
Коментарі