import sys import math sys.setrecursionlimit(10 ** 5) from typing import List, Tuple def int1(x: str, /): return int(x) - 1 def input(): return sys.stdin.readline().rstrip('\n') def dbg(*args, **kwargs): print(*(repr(arg) for arg in args), *(f'{k}: {repr(v)}' for k, v in kwargs.items()), sep='; ', file=sys.stderr) def main(): n, m, s, g = map(int, input().split()) e = [[math.inf] * n for _ in range(n)] d = [[math.inf] * n for _ in range(n)] for i in range(n): d[i][i] = 0 for _ in range(m): a, b, c = map(int, input().split()) d[a][b] = e[a][b] = d[b][a] = e[b][a] = c for k in range(n): for i in range(n): for j in range(n): d[i][j] = min(d[i][j], d[i][k] + d[k][j]) cur = s ans = [] while cur != g: ans.append(cur) for i in range(n): if e[cur][i] + d[i][g] == d[cur][g]: cur = i break return ans + [g] def _start(): ret = main() if ret is not None: if isinstance(ret, List) or isinstance(ret, Tuple): print(*ret) else: print(ret) if __name__ == '__main__': _start()