#include<stdio.h>
#define INF 99999
int main()
{
    int n,m;
    scanf("%d",&n);
    if(n<0){
        printf("Invalid input\n");
        return 0;
    }
    scanf("%d",&m);
    if(m<0){
        printf("Invalid input\n");
        return 0;
    }
    int graph[20][200];
    for(int i=1;i<=n;i++)
    for(int j=1;j<=n;j++)
    graph[i][j]=(i==j)?0:INF;
    for(int i=0;i<m;i++){
        int u,v,w;
        scanf("%d %d %d",&u,&v,&w);
        if(w<0){
            printf("Invalid input\n");
            return 0;
        }
        graph[u][v]=w;
        graph[v][u]=w;
    }
    int S,D;
    scanf("%d %d",&S,&D);
    int dist[20],visited[20];
    for(int i=1;i<=n;i++){
        dist[i]=INF;
        visited[i]=0;
    }
    dist[S]=0;
    fr(int count=1;count<=n-1;count++){
        int min=INF,u=-1;
        for(int i=1;i<=n;i++)
        if(!visied[i] && dist[i]<min)
        min=dist[i],u=i;
        if(u==-1)break;
        visited[u]=1;
        for(int v=1;v<=n;v++){
            if(!visited[v] && graph[u][v]!=INF && dist[u]+graph[u][v]<dist[v])
            dist[v]=dist[u]+graph[u][v];
        }
}
if(dist[D]==INF)
printf("-1\n");
else
printf("5d\n",dist[D]);
return 0;
}