H. НОД-раскраска потока
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Рассмотрим неориентированный граф $$$G$$$ с $$$n$$$ вершинами и положительными целыми емкостями на его ребрах. Обозначим как $$$\textsf{maxflow}(u, v)$$$ значение максимального потока в графе от истока $$$u$$$ до стока $$$v$$$. Назовем такой граф $$$G$$$ хорошим, если существует положительное целое число $$$d \geq 2$$$, такое что $$$d$$$ делит каждое из $$$n \cdot (n-1)$$$ значений $$$\textsf{maxflow}(u, v)$$$ для всех пар $$$(u, v)$$$ различных вершин графа $$$G$$$. Обратите внимание, что, в частности, любой граф без ребер является хорошим.

Вам дан граф, и вам нужно раскрасить его вершины так, чтобы для каждого цвета индуцированный$$$^{\text{∗}}$$$ подграф, образованный вершинами этого цвета, был хорошим. Найдите такую раскраску с минимально возможным количеством цветов.

$$$^{\text{∗}}$$$Индуцированный подграф для множества вершин $$$S$$$ — это другой граф, вершины которого составляют $$$S$$$, а ребра — это все ребра из оригинального графа, соединяющие пары вершин в $$$S$$$.

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

Каждый тест состоит из нескольких наборов входных данных. В первой строке находится одно целое число $$$t$$$ ($$$1 \le t \le 1000$$$) — количество наборов входных данных. Далее следует описание наборов входных данных.

Первая строка каждого набора входных данных содержит два целых числа $$$n$$$ и $$$m$$$ ($$$1 \leq n \leq 50$$$, $$$0 \leq m \leq \frac{n(n-1)}{2}$$$), количество вершин и количество ребер графа.

Следующие $$$m$$$ строк каждая содержат три целых числа $$$u$$$, $$$v$$$, $$$w$$$ ($$$1 \leq u, v \leq n$$$, $$$1 \leq w \leq 10^6$$$), обозначающие, что существует ребро, соединяющее вершины $$$u$$$ и $$$v$$$ с емкостью $$$w$$$. Гарантируется, что в графе нет петель или кратных ребер между одними и теми же вершинами.

Гарантируется, что сумма значений $$$n^4$$$ по всем наборам входных данных не превосходит $$$50^4$$$.

Можно показать, что из других ограничений следует, что сумма $$$m$$$ по всем наборам входных данных не превышает $$$50\,000$$$, поэтому вам не нужно беспокоиться о размере входных данных.

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

Для каждого набора входных данных выведите одно целое число $$$c$$$ — минимально возможное количество цветов. Затем выведите $$$2c$$$ строк, описывающих раскраску. Для каждого $$$1 \leq i \leq c$$$ вы должны вывести две строки: одну строку с целым числом $$$k_i$$$ — количеством вершин, раскрашенных в $$$i$$$-й цвет, — за которой следует одна строка с $$$k_i$$$ целыми числами — номерами вершин, раскрашенными в $$$i$$$-й цвет.

Если существует несколько решений, выведите любое из них.

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

Ссылка на визуализатор

В ответе на первый набор входных данных индуцированный подграф первого цвета не имеет ребер, а индуцированный подграф второго цвета имеет только одно ребро с емкостью $$$6$$$; следовательно, оба подграфа хорошие.

Во втором наборе входных данных весь граф хороший, так как значение $$$\mathsf{maxflow}$$$ между любой парой вершин делится на $$$3$$$.