D. Лексикографически минимальный кратчайший путь
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Дан связный неориентированный невзвешенный граф из $$$n$$$ вершин и $$$m$$$ ребер. В графе отсутствуют петли и кратные ребра. Дополнительно на каждом ребре $$$(u_i, v_i)$$$ написана буква $$$c_i$$$.

Требуется найти кратчайший путь из вершины 1 в вершину $$$n$$$, а если таких путей несколько, то такой, чтобы строка, образованная из букв на ребрах этого пути, была лексикографически минимальной.

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

В первой строке даны два целых числа $$$n$$$ и $$$m$$$ ($$$2 \le n \le 200000, 1 \le m \le 200000$$$) — количество вершин и ребер в графе.

В каждой из следующих $$$m$$$ строк даны два числа $$$u_i$$$, $$$v_i$$$ ($$$1 \le u_i, v_i \le n, u_i \ne v_i$$$) — вершины, соединенные $$$i$$$-м ребром, и строчная латинская буква $$$c_i$$$, написанная на этом ребре.

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

В первой строке выведите целое число $$$k$$$ — длину кратчайшего пути из вершины 1 в вершину $$$n$$$.

Во второй строке выведите $$$(k+1)$$$ целых чисел — последовательность вершин на кратчайшем пути.

В третьей строке выведите строку из $$$k$$$ символов — последовательность букв на этом пути. Эта строка должна быть лексикографически минимальной среди всех строк, образованных кратчайшими путями из вершины 1 в вершину $$$n$$$.

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

Примеры
Входные данные
3 2
1 2 a
2 3 b
Выходные данные
2
1 2 3 
ab
Входные данные
3 3
1 3 z
1 2 a
2 3 b
Выходные данные
1
1 3 
z
Входные данные
4 4
1 2 b
2 4 a
1 3 a
3 4 z
Выходные данные
2
1 3 4 
az