Дан неориентированный граф, найдите минимальное вершинное покрытие. Звучит безумно, правда?
Пусть $M$ — размер максимального паросочетания, а $C$ — размер минимального вершинного покрытия. Если минимальное вершинное покрытие является «smol», что означает $C \le M + 1$, то найдите его.
Входные данные
Каждый тест содержит несколько наборов входных данных. Первая строка содержит количество наборов входных данных $T$ ($1 \le T \le 10^4$).
Далее следует описание наборов входных данных.
Первая строка каждого набора содержит два целых числа $n$ и $m$ ($1 \le n \le 500$, $0 \le m \le \frac{n(n-1)}{2}$) — количество вершин и ребер в графе.
Следующие $m$ строк описывают ребра графа, каждая из них содержит два целых числа $u$ и $v$ ($1 \le u < v \le n$) — вершины, соединенные ребром. Вершины пронумерованы от $1$ до $n$.
Гарантируется, что граф не содержит кратных ребер.
Гарантируется, что сумма $n^2$ по всем наборам входных данных не превышает $250\,000$.
Выходные данные
Для каждого набора входных данных, если минимальное вершинное покрытие является «smol», выведите его размер $C$ на первой строке, а затем $C$ различных вершин, разделенных пробелом, которые образуют вершинное покрытие, на второй строке. В противном случае выведите «not smol» на отдельной строке (без кавычек).
Если существует несколько возможных «smol» минимальных вершинных покрытий, выведите любое из них.
Примеры
Входные данные 1
1 5 5 1 2 2 3 3 4 4 5 1 5
Выходные данные 1
3 2 3 5
Входные данные 2
2 3 0 5 10 1 2 1 3 1 4 1 5 2 3 2 4 2 5 3 4 3 5 4 5
Выходные данные 2
0 not smol
Примечание
Вершинное покрытие — это такое множество вершин, что для каждого ребра хотя бы один из его концов принадлежит этому множеству.
Паросочетание — это множество ребер, в котором никакие два ребра не имеют общих концов.
Заметьте, что минимальное вершинное покрытие не будет принято в качестве правильного ответа, если оно не является «smol».