from heapq import * n, m, s, g = map(int, input().split()) edges = [[] for _ in range(n)] for _ in range(m): u, v, c = map(int, input().split()) edges[u].append((v, c)) edges[v].append((u, c)) dist = [1 << 30] * n dist[g] = 0 nex = [-1] * n hq = [g] while hq: tmp = heappop(hq) d = tmp // n pos = tmp - d * n if dist[pos] < d: continue for npos, c in edges[pos]: tmp = c + d if tmp < dist[npos]: dist[npos] = tmp heappush(hq, tmp * n + npos) nex[npos] = pos elif tmp == dist[npos] and pos < nex[npos]: nex[npos] = pos ans = [] while s != -1: ans.append(s) s = nex[s] print(*ans)