#include<bits/stdc++.h>
using namespace std;
const int inf=1000000000;
int n,g[10][10];
void floyd(){
int i,j,k;
for(k=0;k<n;k++)
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(g[i][k]+g[k][j]<g[i][j])
g[i][j]=g[i][k]+g[k][j];
}
int main(){
int m,a,b,l,i,j;
while(scanf("%d%d",&n,&m)!=EOF)
{
for(i=0;i<n;i++)
for(j=0;j<n;j++)
g[i][j]=inf;
while(m--)
{
scanf("%d%d%d",&a,&b,&l);
g[a-1][b-1]=g[b-1][a-1]=l;
}
floyd();
scanf("%d%d",&a,&b);
if(g[a-1][b-1]==inf)
puts("No path");
else
printf("%d\n",g[a-1][b-1]);
}
return 0;
}
//hacknet
/**************************************************************
Problem: 2044
User: liyunshuo
Language: C++
Result: Accepted
Time:21 ms
Memory:2076 kb
****************************************************************/