На острове Занзибар в городе Адельтон есть туристическое агентство. Оно решило предложить клиентам, помимо других туров, еще и экскурсию по городу. Чтобы заработать как можно больше, агентство приняло хитрое решение: найти для экскурсии кратчайший маршрут, начинающийся и заканчивающийся в одном и том же месте.
Ваша задача — написать программу, которая найдёт такой маршрут. В городе N перекрёстков, занумерованных от 1 до N, и M двусторонних дорог, занумерованных от 1 до M. Два перекрёстка могут быть соединены несколькими дорогами, но никакая дорога не соединяет перекрёсток с самим собой. Каждый экскурсионный маршрут полностью определяется последовательностью номеров дорог y1, …, yk, k ≥ 3. Дорога yi (1 ≤ i ≤ k − 1) соединяет перекрёстки xi и xi+1, дорога yk соединяет перекрёстки xk и x1. Все числа x1, …, xk должны быть различны. Длина экскурсионного маршрута равна сумме длин всех дорог, составляющих его, то есть L(y1) + L(y2) + … + L(yk), где L(yi) — длина дороги yi (1 ≤ i ≤ k). Ваша программа должна найти маршрут наименьшей длины или сообщить, что это невозможно, поскольку в городе нет ни одного подходящего маршрута.
Исходные данные
Ввод состоит из T тестов (1 ≤ T ≤ 5). Первая строка каждого теста содержит два целых числа — количество перекрёстков N и количество дорог M (3 ≤ N ≤ 100; 3 ≤ M ≤ N · (N − 1)). Каждая из следующих M строк описывает одну дорогу. Она содержит три целых числа: номер первого перекрёстка a, номер второго перекрёстка b и длину дороги l (1 ≤ a, b ≤ N; a ≠ b; 1 ≤ l ≤ 300). Ввод заканчивается строкой, содержащей единственное число −1.
Результат
Каждая строка вывода должна содержать ответ на соответствующий тест. Строка должна содержать или текст «No solution.», если нельзя подобрать экскурсионный маршрут, или номера всех перекрёстков в кратчайшем экскурсионном маршруте в порядке, в котором их нужно проезжать (то есть числа x1, …, xk из определения экскурсионного маршрута), разделённые одиночными пробелами. Если существуют несколько экскурсионных маршрутов минимальной длины, выведите любой из них.
Пример
| исходные данные | результат |
|---|
5 7
1 4 1
1 3 300
3 1 10
1 2 16
2 3 100
2 5 15
5 3 20
4 3
1 2 10
1 3 20
1 4 30
-1
| 1 3 5 2
No solution.
|
Источник задачи: Central European Olympiad in Informatics 1999