#include<bits/stdc++.h>
using namespace std;
const int maxn=1e+7;
int dis[205],vis[205];
int mins[205][205];
int main()
{
int n,m;
int s,t;
int i,j;
int a,b,x;
while(cin>>n>>m){
memset(vis,0,sizeof(vis));
memset(dis,maxn,sizeof(dis));
for(i=0;i<n;i++)
for(j=0;j<n;j++)
mins[i][j] = i==j?0:maxn;
for(i=0;i<m;i++){
cin>>a>>b>>x;
if(mins[a][b]>x){
mins[a][b]=mins[b][a]=x;
}
}
cin>>s>>t;
for(i=0;i<n;i++){
dis[i]=mins[s][i];
}
vis[s]=1;
while(1){
int minss=maxn;
int k=-1;
for(i=0;i<n;i++){
if(vis[i]==0&&dis[i]<minss){
minss=dis[i];
k=i;
}
}
if(k<0) break;
vis[k]=1;
for(i=0;i<n;i++){
if(vis[i]==0&&dis[i]>dis[k]+mins[k][i])
dis[i]=dis[k]+mins[k][i];
}
}
if(dis[t]==maxn) cout<<-1<<endl;
else cout<<dis[t]<<endl;
}
return 0;
}
07-22
07-22