#include<bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
int dis[35];
int visit[35];
int SSSP[35][35];
void dijkstra(int x,int n)
{
   int pos;
   int minn;
   for(int i=1;i<=n;i++)
   {
      dis[i]=SSSP[1][i];
   }
   visit[x]=1;
   dis[x]=0;
   for(int i=1;i<=n;i++)
   {
        minn=INF;
        pos=0;
        for(int j=1;j<=n;j++)
        {
           if(!visit[j]&&dis[j]<minn)
           {
              pos=j;
              minn=dis[j];
           }

        }
        if(pos==0) break;
        else
        {
            visit[pos]=1;
            for(int j=1;j<=n;j++)
            {
               if(!visit[j]&& dis[pos]+SSSP[pos][j]<dis[j])
                 dis[j]=dis[pos]+SSSP[pos][j];
            }
        }

   }
}
int main()
{
      int n,m;   cin>>n>>m;
      memset(visit,0,sizeof(visit));
      memset(dis,0,sizeof(dis));
      memset(SSSP,INF,sizeof(SSSP));
      int a[1005];
      int b[1005];
      int t[1005];
      for(int i=1;i<=m;i++)
      {
          cin>>a[i]>>b[i]>>t[i];
          SSSP[a[i]][b[i]]=t[i];
          SSSP[b[i]][a[i]]=t[i];
      }
      dijkstra(1,n); //1 -n ;
      cout<<dis[n]<<endl;
}