#include <iostream>
#include <cstring>
#include <string>
#include <cstdlib>
#include <map>
#include <vector>
#include <cmath>
#include <queue>
#include <algorithm>
#define INF 99999999
using namespace std;
int main()
{
int n,m;
int mapp[105][105],dis[105],book[105],num[105];
queue<int>q;
while(cin>>n>>m&&n&&m)
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(i==j)
mapp[i][j]=0;
else
mapp[i][j]=INF;
}
}
for(int i=1;i<=m;i++)
{
int a,b,c;
cin>>a>>b>>c;
mapp[a][b]=c;
mapp[b][a]=c;
}
for(int i=1;i<=n;i++)//初始化源点到各个点的距离为无穷大
dis[i]=INF;
dis[1]=0;//到自身距离为0
q.push(1);
memset(book,0,sizeof(book));
book[1]=1;
while(!q.empty())//spafa算法 求最短路
{
int u=q.front();
q.pop();
for(int v=1;v<=n;v++)
{
if(dis[v]>dis[u]+mapp[u][v])
{
dis[v]=dis[u]+mapp[u][v];
if(book[v]==0)
{
q.push(v);
book[v]=1;
}
}
}
book[u]=0;
}
cout << dis[n] << endl;
}
return 0;
}