#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define fi first
#define se second
#define pr pair<int,int>
const ll MAXN = 100005;
const ll INF = 1e18;
vector <pair<int,int>> A[MAXN];
vector <bool> ktra(MAXN,false);
vector <ll> vet(MAXN,0),v;
priority_queue<pr,vector<pr>,greater<pr>> Q;
void dijkstra(int n,int xp, int dich){
vector <ll> L(n+1,INF);
L[xp]=0;
Q.push({0,xp});
while(!Q.empty()){
auto canh=Q.top();
ll u=canh.se;
Q.pop();
if(ktra[u]) continue;
ktra[u]=true;
for(auto x:A[u]){
ll v=x.fi,w=x.se;
if(L[v]>L[u]+w){
L[v]=L[u]+w;
vet[v]=u;
Q.push({L[v],v});
}
}
}
ll ans=L[dich];
if(L[dich]==INF){
cout << 0 << "\n";
}
else{
v.push_back(dich);
while(dich!=xp){
v.push_back(vet[dich]);
dich=vet[dich];
}
cout << ans << "\n";
for(ll i=v.size()-1 ; i>=0 ; i--) cout << v[i] << " ";
}
}
int main(){
ll n,m; cin >> n >> m;
for(ll i=1 ; i<=m ; i++){
ll u,v,x; cin >> u >> v >> x;
A[u].push_back({v,x});
A[v].push_back({u,x});
}
ll xp,dich;
cin >> xp >> dich;
dijkstra(n,xp,dich);
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBwciBwYWlyPGludCxpbnQ+Cgpjb25zdCBsbCBNQVhOID0gMTAwMDA1Owpjb25zdCBsbCBJTkYgPSAxZTE4Owp2ZWN0b3IgPHBhaXI8aW50LGludD4+IEFbTUFYTl07CnZlY3RvciA8Ym9vbD4ga3RyYShNQVhOLGZhbHNlKTsKdmVjdG9yIDxsbD4gdmV0KE1BWE4sMCksdjsKcHJpb3JpdHlfcXVldWU8cHIsdmVjdG9yPHByPixncmVhdGVyPHByPj4gUTsKdm9pZCBkaWprc3RyYShpbnQgbixpbnQgeHAsIGludCBkaWNoKXsKICAgIHZlY3RvciA8bGw+IEwobisxLElORik7CiAgICBMW3hwXT0wOwogICAgUS5wdXNoKHswLHhwfSk7CiAgICB3aGlsZSghUS5lbXB0eSgpKXsKICAgICAgICBhdXRvIGNhbmg9US50b3AoKTsKICAgICAgICBsbCB1PWNhbmguc2U7CiAgICAgICAgUS5wb3AoKTsKICAgICAgICBpZihrdHJhW3VdKSBjb250aW51ZTsKICAgICAgICBrdHJhW3VdPXRydWU7CiAgICAgICAgZm9yKGF1dG8geDpBW3VdKXsKICAgICAgICAgICAgbGwgdj14LmZpLHc9eC5zZTsKICAgICAgICAgICAgaWYoTFt2XT5MW3VdK3cpewogICAgICAgICAgICAgICAgTFt2XT1MW3VdK3c7CiAgICAgICAgICAgICAgICB2ZXRbdl09dTsKICAgICAgICAgICAgICAgIFEucHVzaCh7TFt2XSx2fSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGwgYW5zPUxbZGljaF07CiAgICBpZihMW2RpY2hdPT1JTkYpewogICAgICAgIGNvdXQgPDwgMCA8PCAiXG4iOwogICAgfQogICAgZWxzZXsKICAgICAgICB2LnB1c2hfYmFjayhkaWNoKTsKICAgICAgICB3aGlsZShkaWNoIT14cCl7CiAgICAgICAgICAgIHYucHVzaF9iYWNrKHZldFtkaWNoXSk7CiAgICAgICAgICAgIGRpY2g9dmV0W2RpY2hdOwogICAgICAgIH0KICAgICAgICBjb3V0IDw8IGFucyA8PCAiXG4iOwogICAgICAgIGZvcihsbCBpPXYuc2l6ZSgpLTEgOyBpPj0wIDsgaS0tKSBjb3V0IDw8IHZbaV0gPDwgIiAiOwogICAgfQp9CgoKaW50IG1haW4oKXsKICAgIGxsIG4sbTsgY2luID4+IG4gPj4gbTsKICAgIGZvcihsbCBpPTEgOyBpPD1tIDsgaSsrKXsKICAgICAgICBsbCB1LHYseDsgY2luID4+IHUgPj4gdiA+PiB4OwogICAgICAgIEFbdV0ucHVzaF9iYWNrKHt2LHh9KTsKICAgICAgICBBW3ZdLnB1c2hfYmFjayh7dSx4fSk7CiAgICB9CiAgICBsbCB4cCxkaWNoOwogICAgY2luID4+IHhwID4+IGRpY2g7CiAgICBkaWprc3RyYShuLHhwLGRpY2gpOwp9Cg==