#include<bits/stdc++.h>
#define ii pair<int,int>
#define st first
#define nd second
using namespace std;
const int X=2e5+5;
long long n, m, x, y, d[X], c;
vector<ii>b[X];
priority_queue<ii,vector<ii>,greater<ii> >pq;
int main(){
ios_base::sync_with_stdio(false); cin.tie(0);
cin>>n>>m;
while(m--){
cin>>x>>y>>c;
b[x].push_back({c,y});
b[y].push_back({c,x});
}
for(int i=1; i<=n; i++) d[i]=1e18;
d[1]=0;
pq.push({0,1});
while(!(pq.empty())){
ii u=pq.top();
pq.pop();
if(d[u.nd]<u.st) continue;
for(ii v:b[u.nd]){
if(d[v.nd]>u.st+v.st){
d[v.nd]=u.st+v.st;
pq.push({d[v.nd],v.nd});
}
}
}
cout<<d[n];
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBpaSBwYWlyPGludCxpbnQ+CiNkZWZpbmUgc3QgZmlyc3QKI2RlZmluZSBuZCBzZWNvbmQKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBYPTJlNSs1Owpsb25nIGxvbmcgbiwgbSwgeCwgeSwgZFtYXSwgYzsKdmVjdG9yPGlpPmJbWF07CnByaW9yaXR5X3F1ZXVlPGlpLHZlY3RvcjxpaT4sZ3JlYXRlcjxpaT4gPnBxOwoKaW50IG1haW4oKXsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyAgIGNpbi50aWUoMCk7CiAgICBjaW4+Pm4+Pm07CiAgICB3aGlsZShtLS0pewogICAgICAgIGNpbj4+eD4+eT4+YzsKICAgICAgICBiW3hdLnB1c2hfYmFjayh7Yyx5fSk7CiAgICAgICAgYlt5XS5wdXNoX2JhY2soe2MseH0pOwogICAgfQoKICAgIGZvcihpbnQgaT0xOyBpPD1uOyBpKyspIGRbaV09MWUxODsKICAgIGRbMV09MDsKICAgIHBxLnB1c2goezAsMX0pOwogICAgd2hpbGUoIShwcS5lbXB0eSgpKSl7CiAgICAgICAgaWkgdT1wcS50b3AoKTsKICAgICAgICBwcS5wb3AoKTsKICAgICAgICBpZihkW3UubmRdPHUuc3QpICAgIGNvbnRpbnVlOwogICAgICAgIGZvcihpaSB2OmJbdS5uZF0pewogICAgICAgICAgICBpZihkW3YubmRdPnUuc3Qrdi5zdCl7CiAgICAgICAgICAgICAgICBkW3YubmRdPXUuc3Qrdi5zdDsKICAgICAgICAgICAgICAgIHBxLnB1c2goe2Rbdi5uZF0sdi5uZH0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgY291dDw8ZFtuXTsKfQo=