#include<stdio.h>
#include<limits.h>
#include<stdbool.h>
#define MAX 100
int findmindistance(int dist[],bool visited[],int n){
    int min=INT_MAX, min_index=-1;
    for(int v=1;v<=n;v++) {
        if (!visited[v] && dist[v] <= min){
            min = dist[v];
            min_index = v;
        }
    }
    return min_index;
}

void dijkstra(int graph[MAX][MAX],int n,int src,int dest){
    int dist[MAX];
    bool visited[MAX];
    
    for(int i=1;i<=n;i++) {
        dist[i]=INT_MAX;
        visited[i]=false;
    }
    dist[src]=0;
    for(int count=1;count<=n-1;count++){
        int u=findmindistance(dist,visited,n);
        if(u==-1)break;
        visited[u]=true;
        for(int v=1;v<=n;v++){
            if(!visited[v] && graph[u][v] && dist[u] != INT_MAX && dist[u] + graph[u][v]<dist[v]){
                dist[v]=dist[u]+graph[u][v];    
            }
        }  
   }
   
   if (dist[dest]==INT_MAX){
       printf("-1\n");
   }
      else{
       printf("%d\n", dist[dest]);
}
int main(){
    int n,m;
    scanf("%d",&n);
    if(n<0){
        printf("Invalid input\n");
        retuen 0;
    }
    scanf("%d",&m);
    int graph[MAX][MAX]={0};
    for(int i=0;i<m;i++) {
        int u,v,w;
        scanf("%d %d %d", &u,&v,&w);
        graph[u][v]=w;
        graph[v][u]=w;
    }
    int s,d;
    scanf("%d %d",&s,&d);
    dijkstra(graph,n,s,d);
    return 0;
}