E. Кратчайший некратчайший путь
ограничение по времени на тест
4 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Дан связный неориентированный граф, состоящий из $$$n$$$ вершин и $$$m$$$ ребер. В графе отсутствуют петли и кратные рёбра. Найдите в этом графе любой путь $$$P$$$ между заданными вершинами $$$s$$$ и $$$t$$$ такой, что:

  1. $$$P$$$ не содержит никакую вершину графа дважды;
  2. $$$P$$$ содержит строго больше вершин, чем кратчайший путь между $$$s$$$ и $$$t$$$;
  3. $$$P$$$ содержит наименьшее число вершин среди всех путей, удовлетворяющих условиям $$$1$$$ и $$$2$$$.
Входные данные

Первая строка содержит четыре целых числа $$$n$$$, $$$m$$$, $$$s$$$, $$$t$$$ ($$$2 \le n \le 2\,000$$$; $$$n-1 \le m \le 25\,000$$$; $$$1 \le s, t \le n$$$, $$$s\neq t$$$) — число вершин и рёбер в графе и номера концов пути $$$P$$$ соответственно.

Следующие $$$m$$$ строк описывают ребра: ребро $$$i$$$ задано парой вершин $$$a_i$$$, $$$b_i$$$ ($$$1 \le a_i, b_i \le n$$$, $$$a_i \ne b_i$$$), где $$$a_i$$$ и $$$b_i$$$ — это вершины, которые соединяет $$$i$$$-е ребро.

Гарантируется, что граф связный и не содержит петель и кратных рёбер.

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

Если искомого пути $$$P$$$ не существует, в единственной строке выведите $$$-1$$$.

Иначе в первой строке выведите число $$$k$$$ — количество вершин в пути $$$P$$$. Во второй строке выведите $$$k$$$ различных целых чисел, $$$v_1, v_2, \ldots, v_k$$$ ($$$1\le v_i \le n$$$, $$$v_1=s$$$, $$$v_k=t$$$, $$$v_i$$$ и $$$v_{i+1}$$$ соединены ребром для любого $$$1 \le i \lt k$$$) — номера вершин в пути $$$P$$$ в порядке следования.

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

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