#include<bits/stdc++.h>
using namespace std;

int mindis(vector<int>&dist,vector<bool>&vis,int n){
    int min=INT_MAX;
    int ind=-1;
    for(int i=0;i<n;i++){
        if(!vis[i] && dist[i]<min){
            min=dist[i];
            ind=i;
        }
    }
    return ind;
}

void solve(vector<vector<int>>&g,int src,vector<int>&dist,vector<int>&par,int n){
    dist[src]=0;
    vector<bool>vis(n,false);
    for(int c=0;c<n-1;c++){
        int u=mindis(dist,vis,n);
        if(u==-1){
            break;
        }
        vis[u]=true;
        for(int v=0;v<n;v++){
            if(!vis[v] && g[u][v]!=0 && dist[u]+g[u][v]<dist[v]){
                dist[v]=dist[u]+g[u][v];
                par[v]=u;
            }
        }
    }
}

int main(){
    int n,m;
    cin>>n>>m;
    vector<vector<int>>g(n,vector<int>(n,0));
    for(int i=0;i<m;i++){
        int s,d,w;
        cin>>s>>d>>w;
        g[s][d]=w;
        g[d][s]=w;
    }
    int src,dest;
    cin>>src>>dest;
    vector<int>dist(n,INT_MAX);
    vector<int>par(n,-1);
    solve(g,src,dist,par,n);
    vector<int>ans;
    for(int p=dest;p>=-1;p=dist[p]){
        ans.push_back(p);
    }
    for(int i:ans){
        cout<<i;
        if(i<ans.size()-1){
            cout<<"->";
        }
    }
    cout<<endl;
    int len=dist[dest];
    cout<<"length :"<<len;
}