#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=15;
int arr[N][N];
int dist[N];
bool st[N];
int n,m,x,y;
int Dijkstar()
{
memset(dist,0x3f,sizeof(dist));
dist[x]=0;
for(int i=0;i<n;i++)
{
int t=-1;
for(int j=1;j<=n;j++)
{
if(!st[j] && (t==-1 || dist[j]<dist[t]))
t=j;
}
st[t]=true;
for(int j=1;j<=n;j++)
{
dist[j]=min(dist[j],dist[t]+arr[t][j]);
}
}
if(dist[y]==0x3f3f3f3f)
return -1;
else
return dist[y];
}
int main()
{
while(cin>>n)
{
cin>>m;
memset(arr,0x3f,sizeof(arr));
memset(st,false,sizeof(st));
for(int i=0;i<m;i++)
{
int a,b,l;
cin>>a>>b>>l;
arr[a][b]=arr[b][a]=l;
}
cin>>x>>y;
int tem=Dijkstar();
if(tem==-1)
cout<<"No path"<<endl;
else
cout<<tem<<endl;
}
}