#include "stdio.h"
const int maxV = 1001;
const int maxE = 2001;
const int maxLen = 999999;
int dist[maxV];
int length[maxV][maxV];
int i,j;
void Dijkstra(int v,int n)
{
bool s[maxV];
for(i=1;i<=n;++i)
{
s[i]=0;
dist[i]=length[v][i];
}
s[v]=1;
dist[v]=0;
for(i=2;i<=n;++i)
{
int temp = maxLen;
int u = v;
for(j=1;j<=n;++j)
{
if(!s[j]&&dist[j]<temp)
{
u = j ;
temp = dist[j];
}
}
s[u]=1;
for(j=1;j<=n;j++)
{
if(!s[j]&&dist[j]>length[u][j]+dist[u])
dist[j]=length[u][j]+dist[u];
}
}
}
int main(int argc, char* argv[])
{
int t,n;
int a,b,len;
//FILE *fp = freopen("data.txt","r",stdin);
while(scanf("%d%d",&t,&n)!=EOF)
{
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
length[i][j]=maxLen;
for(i=0 ; i<t;i++)
{
scanf("%d%d%d",&a,&b,&len);
if(len<length[a][b])//重边
{
length[a][b]=len;
length[b][a]=len;
}
}
Dijkstra(n,n);
printf("%d\n",dist[1]);
}
return 0;
}