#include <iostream>
#include <cstring>
using namespace std;
int d[1200][1200],k,i,j,n,m,x,y,z,s,e;
int main()
{
memset(d,127,sizeof(d));
cin >>n >>m; //点数和边数
for (i=1;i<=m;i++)
{
cin >>x >>y >>z;//点 x 点 y之间的距离
d[x][y]=d[y][x]=min(d[x][y],z);
}
cin >>s >>e;//开头和结尾
for (k=1;k<=n;k++)
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
if (i!=j&&j!=k&&k!=i)
d[i][j]=min(d[i][j],d[i][k]+d[k][j]);
cout <<d[s][e];//输出
return 0;
}