#include<stdio.h>
#include<string>
using namespace std;
int n,t;
int map[1010][1010],u[1010];
int dijkstra()
{
int i,j,k,Max;
int dis[1010];
for(i=1;i<=n;i++)
{
dis[i]=map[1][i];
u[i]=0;
}
u[1]=1,dis[1]=0;
for(i=1;i<n;i++)
{
Max=0x7fffffff;
for(j=1;j<=n;j++)
if(!u[j]&&dis[j]<Max)
{
k=j;
Max=dis[j];
}
u[k]=1;
for(j=1;j<=n;j++)
if(!u[j]&&dis[j]>dis[k]+map[k][j])
dis[j]=dis[k]+map[k][j];
}
return dis[n];
}
int main()
{
int u,v,w;
while(scanf("%d%d",&t,&n)!=EOF)
{
int i,ans=0;
memset(map,10000,sizeof(map));
for(i=1;i<=t;i++)
{
scanf("%d%d%d",&u,&v,&w);
if(map[u][v]>w)
map[u][v]=map[v][u]=w;
}
ans=dijkstra();
printf("%d\n",ans);
}
return 0;
}