#include<iostream>
#include<cstring>
#define INF 9999999
using namespace std;
int N,M,g[105][105],dis[105],A,B,C;
bool v[105];
int dijstra()
{
for(int i=1;i<=N;i++)
{
dis[i]=g[1][i];
}
dis[1]=0;
v[1]=true;
for(int i=2;i<=N;i++)
{
int MIN=INF,pos;
for(int j=1;j<=N;j++)
{
if(v[j]==false&&dis[j]<MIN)
{
MIN=dis[j];
pos=j;
}
}
v[pos]=true;
for(int j=1;j<=N;j++)
{
if(v[j]==false&&dis[j]>dis[pos]+g[pos][j])
{
dis[j]=dis[pos]+g[pos][j];
}
}
}
return dis[N];
}
int main()
{
while(cin>>N>>M&&N&&M)
{
memset(g,INF,sizeof(g));
memset(v,false,sizeof(v));
memset(dis,0,sizeof(dis));
for(int i=0;i<M;i++)
{
cin>>A>>B>>C;
g[A][B]=g[B][A]=C;
}
cout<<dijstra()<<endl;
}
return 0;
}