#include<bits/stdc++.h>
using namespace std;
struct Node{
    int to,w,next;//to儿子,w权值,next哥哥 
}edge[1000];
int n,m,t,u,w,v,s,e,ans=INT_MAX,f=0,head[1005],vis[1000];//n节点,m行,u父亲,v孩子,t序号 \
void add(int u,int w,int v){
    t++;
    edge[t].to=v;
    edge[t].w=w;
    edge[t].next=head[u];
    head[u]=t;
} 
void dfs(int x,int w){
    if(x==e){
        ans=min(ans,w);
        f=1;
        return;
    }else{
        for(int i=head[x].next,i!=0,i=edge[i].next){
            if(vis[edge[i].to]!=1){
                vis[edge[i].to]=1;
                dfs(vis[edge[i].to],w+edge[i].w);
                vis[edge[i].to]=0;
            }
        }
    }
}
int main(){
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=m;i++){
        cin>>u>>w>>v;
        add(u,w,v);
        add(v,w,u);
    } 
    cin>>s>>e;
    dfs(s,0);
    if(f==0) cout<<ans;
    else cout<<'No path';
    return 0;
}
/**************************************************************
	Problem: 2044
	User: admin
	Language: C++
	Result: Compile Error
****************************************************************/