В сети компании Melkosoft N серверов, использующих операционную систему Losedows. Некоторые из них соединены двусторонними каналами связи. Сеть называется надёжной, если между двумя любыми различными серверами найдется какой-либо маршрут, состоящий из одного или нескольких каналов связи. Однако, сеть, в которой вообще нет серверов, надёжной не считается.
Наши доблестные хакеры хотят наглядно продемонстрировать компании Melkosoft ошибку в последней версииLosedows (естественно, без согласия компании Melkosoft). А именно, если в сети вырубить несколько серверов таким образом, что оставшаяся часть сети станет ненадёжной, то все оставшиеся серверы сети резко повисают.
Так как бомбардировка сервера битыми пакетами таким образом, чтобы он вырубился - занятие крайне тяжёлое, то хакеры хотят вырубить минимально возможное число серверов таким образом, чтобы все остальные повисли.
Напишите программу, которая определяет минимальное множество серверов, которые нужно бомбардировать.
В первой строке заданы два числа N и M (1 ≤ N ≤ 50, 0 ≤ M ≤ 100). Далее следуют M строк, описывающие пары серверов, соединённые каналами связи. Каждый канал описывается строкой из двух чисел u_i v_i, где 1 ≤ u_i, v_i ≤ N - номера серверов, соединённых i-м каналом. Два сервера могут быть соединены более чем одним каналом.
В первой строке выведите минимальное число серверов K, которое необходимо вырубить, чтобы все оставшиеся повисли из-за ошибки в Losedows. Во второй строке выведите номера серверов, которые необходимо вырубить, в произвольном порядке. Если оптимальных решений несколько, разрешается выводить любое. Если исходная сетьMelkosoft ненадёжна, выведите число 0.