from queue import PriorityQueue N,M,S,G = list(map(int, input().split(' '))) T = [] for i in range(N): T.append([-1 for _ in range(N)]) for i in range(M): b,e,t = list(map(int, input().split(' '))) T[b][e] = t T[e][b] = t D = [] for i in range(N): D.append(float('inf')) D[S] = 0 P = [] for i in range(N): P.append(-1) Q = PriorityQueue() for i, d in enumerate(D): Q.put((d, i)) while not Q.empty(): d, u = Q.get() for v, t in enumerate(T[u]): if t != -1: s = D[u] + t if s < D[v]: D[v] = s P[v] = u Q.put((s, v)) R = {} for i, d in enumerate(D): R[d] = i solution = [] for r in sorted(R.keys()): solution.append(str(R[r])) print(' '.join(solution))