#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
****************************************************************/