#include <bits/stdc++.h>
using namespace std;
vector <pair<int,int>> adj_list[1000];
priority_queue<pair<int,int>, vector<pair<int,int>>,greater<pair<int,int>>> pq;
int cost[1000];
int parent[1000];
void dijkstra(int s){
for(int i=0;i<1000;i++){
cost[i]=INT_MAX;
}
cost[s]=0;
parent[s]=s;
pq.push({cost[s],s});
while(!pq.empty()){
int u=pq.top().second;
pq.pop();
for(int i=0;i<adj_list[u].size();i++){
int v=adj_list[u][i].first;
int weight=adj_list[u][i].second;
if(cost[u]+ weight<cost[v]){
cost[v]=cost[u]+weight;
parent[v]=u;
pq.push({cost[v],v});
}
}
}
}
int main(){
int nodes,edges;cin>>nodes>>edges;
int u,v,w;
for(int i=1;i<=edges;i++){
cin>>u>>v>>w;
adj_list[u].push_back({v,w});
}
int source,dest;
cin>>source>>dest;
dijkstra(source);
cout<<cost[dest]<<"\n";
cout<<"traceback: ";
int x=dest;
vector<int> traceback;
traceback.push_back(x);
while(parent[x]!=x){
traceback.push_back(parent[x]);
x=parent[x];
}
reverse(traceback.begin(),traceback.end());
for(auto x: traceback) cout<<x<<" ";
/*
input
6 8
1 2 7
1 3 12
2 3 2
2 4 9
3 5 10
4 6 1
5 4 4
5 6 5
1 6
*/
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnZlY3RvciA8cGFpcjxpbnQsaW50Pj4gYWRqX2xpc3RbMTAwMF07CnByaW9yaXR5X3F1ZXVlPHBhaXI8aW50LGludD4sIHZlY3RvcjxwYWlyPGludCxpbnQ+PixncmVhdGVyPHBhaXI8aW50LGludD4+PiBwcTsKaW50IGNvc3RbMTAwMF07CmludCBwYXJlbnRbMTAwMF07Cgp2b2lkIGRpamtzdHJhKGludCBzKXsKICAgIGZvcihpbnQgaT0wO2k8MTAwMDtpKyspewogICAgICAgIGNvc3RbaV09SU5UX01BWDsKICAgIH0KICAgIGNvc3Rbc109MDsKICAgIHBhcmVudFtzXT1zOwogICAgcHEucHVzaCh7Y29zdFtzXSxzfSk7CgogICAgd2hpbGUoIXBxLmVtcHR5KCkpewogICAgICAgIGludCB1PXBxLnRvcCgpLnNlY29uZDsKICAgICAgICBwcS5wb3AoKTsKCiAgICAgICAgZm9yKGludCBpPTA7aTxhZGpfbGlzdFt1XS5zaXplKCk7aSsrKXsKICAgICAgICAgICAgaW50IHY9YWRqX2xpc3RbdV1baV0uZmlyc3Q7CiAgICAgICAgICAgIGludCB3ZWlnaHQ9YWRqX2xpc3RbdV1baV0uc2Vjb25kOwoKICAgICAgICAgICAgaWYoY29zdFt1XSsgd2VpZ2h0PGNvc3Rbdl0pewogICAgICAgICAgICAgICAgY29zdFt2XT1jb3N0W3VdK3dlaWdodDsKICAgICAgICAgICAgICAgIHBhcmVudFt2XT11OwogICAgICAgICAgICAgICAgcHEucHVzaCh7Y29zdFt2XSx2fSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgfQp9CgppbnQgbWFpbigpewogICAgaW50IG5vZGVzLGVkZ2VzO2Npbj4+bm9kZXM+PmVkZ2VzOwogICAgaW50IHUsdix3OwogICAgZm9yKGludCBpPTE7aTw9ZWRnZXM7aSsrKXsKICAgICAgICBjaW4+PnU+PnY+Pnc7CiAgICAgICAgYWRqX2xpc3RbdV0ucHVzaF9iYWNrKHt2LHd9KTsKICAgIH0KICAgIGludCBzb3VyY2UsZGVzdDsKICAgIGNpbj4+c291cmNlPj5kZXN0OwogICAgZGlqa3N0cmEoc291cmNlKTsKICAgIGNvdXQ8PGNvc3RbZGVzdF08PCJcbiI7CgogICAgY291dDw8InRyYWNlYmFjazogIjsKICAgIGludCB4PWRlc3Q7CiAgICB2ZWN0b3I8aW50PiB0cmFjZWJhY2s7CiAgICB0cmFjZWJhY2sucHVzaF9iYWNrKHgpOwogICAgd2hpbGUocGFyZW50W3hdIT14KXsKICAgICAgICB0cmFjZWJhY2sucHVzaF9iYWNrKHBhcmVudFt4XSk7CiAgICAgICAgeD1wYXJlbnRbeF07CiAgICB9CiAgICByZXZlcnNlKHRyYWNlYmFjay5iZWdpbigpLHRyYWNlYmFjay5lbmQoKSk7CiAgICBmb3IoYXV0byB4OiB0cmFjZWJhY2spIGNvdXQ8PHg8PCIgIjsKLyoKaW5wdXQKNiA4CgoxIDIgNwoxIDMgMTIKMiAzIDIKMiA0IDkKMyA1IDEwCjQgNiAxCjUgNCA0CjUgNiA1CgoxIDYKKi8KfQo=