#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: fuhongyi
	Language: C
	Result: Compile Error
****************************************************************/