#include #include #include #include using namespace std; #define rep(i, n) for (int i = 0; i < (n); i++) int N, M, s, t; long D[202][202]; vector> G[202]; int main() { cin >> N >> M >> s >> t; rep(i, N) rep(j, N) D[i][j] = 1e9; rep(i, M) { int a, b, c; cin >> a >> b >> c; D[a][b] = c; D[b][a] = c; G[a].push_back({b,c}); G[b].push_back({a,c}); } rep(i,N)D[i][i]=0; rep(k,N)rep(i,N)rep(j,N)D[i][j]=min(D[i][j],D[i][k]+D[k][j]); vector A; int it = s; A.push_back(it); while (it != t) { int nt=N; for(auto[nxt,cst]:G[it]) if(D[s][it]+cst+D[nxt][t]==D[s][t]){ nt=min(nt,nxt); } A.push_back(nt); it=nt; } for(int x: A) cout << x << " "; cout<