#include<bits/stdc++.h>
using namespace std;
const long long MaxN = 2e5 + 5,MaxK=2, INF= 1e18;
long long n,m, d[MaxN][MaxK];
vector<pair<long long, long long>> vt[MaxN];
void dijikstra()
{
priority_queue<tuple<long long, long long, long long>,
vector<tuple<long long, long long, long long>>,
greater<tuple<long long, long long, long long>>> pq;
pq.push({0,1,0});
while(!pq.empty())
{
long long du=get<0>(pq.top());
long long u=get<1>(pq.top());
long long state=get<2>(pq.top());
pq.pop();
if(du!=d[u][state]) continue;
for(auto x:vt[u])
{
long long v=x.first;
long long weight_v=x.second;
long long nd=du+weight_v;
if(state==0)
{
if(nd<d[v][0])
{
d[v][1]=d[v][0];
d[v][0]=nd;
pq.push({d[v][0],v,0});
if(d[v][1]!=INF)
pq.push({d[v][1],v,1});
}
else if(d[v][0]<nd && nd<d[v][1])
{
d[v][1]=nd;
pq.push({d[v][1],v,1});
}
}
if(state==1)
{
if(d[v][0]<nd && nd<d[v][1])
{
d[v][1]=nd;
pq.push({d[v][1],v,1});
}
}
}
}
}
void input()
{
cin>>n>>m;
for(long long i=1;i<=m;i++)
{
long long u,v,w;
cin>>u>>v>>w;
vt[u].push_back({v,w});
vt[v].push_back({u,w});
}
}
void output()
{
for(long long i=1;i<=n;i++)
{
for(long long j=0;j<=1;j++)
{
d[i][j]=INF;
}
}
d[1][0]=0;
dijikstra();
if(d[n][1]==INF)
{
cout<<-1;
return;
}
cout<<d[n][1];
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
input();
output();
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKY29uc3QgbG9uZyBsb25nIE1heE4gPSAyZTUgKyA1LE1heEs9MiwgSU5GPSAxZTE4Owpsb25nIGxvbmcgbixtLCBkW01heE5dW01heEtdOwp2ZWN0b3I8cGFpcjxsb25nIGxvbmcsIGxvbmcgbG9uZz4+IHZ0W01heE5dOwoKdm9pZCBkaWppa3N0cmEoKQp7CiAgICBwcmlvcml0eV9xdWV1ZTx0dXBsZTxsb25nIGxvbmcsIGxvbmcgbG9uZywgbG9uZyBsb25nPiwKICAgICAgICAgICAgICAgICAgIHZlY3Rvcjx0dXBsZTxsb25nIGxvbmcsIGxvbmcgbG9uZywgbG9uZyBsb25nPj4sCiAgICAgICAgICAgICAgICAgICBncmVhdGVyPHR1cGxlPGxvbmcgbG9uZywgbG9uZyBsb25nLCBsb25nIGxvbmc+Pj4gcHE7CgogICAgcHEucHVzaCh7MCwxLDB9KTsKCiAgICB3aGlsZSghcHEuZW1wdHkoKSkKICAgIHsKICAgICAgICBsb25nIGxvbmcgZHU9Z2V0PDA+KHBxLnRvcCgpKTsKICAgICAgICBsb25nIGxvbmcgdT1nZXQ8MT4ocHEudG9wKCkpOwogICAgICAgIGxvbmcgbG9uZyBzdGF0ZT1nZXQ8Mj4ocHEudG9wKCkpOwogICAgICAgIHBxLnBvcCgpOwoKICAgICAgICBpZihkdSE9ZFt1XVtzdGF0ZV0pIGNvbnRpbnVlOwoKICAgICAgICBmb3IoYXV0byB4OnZ0W3VdKQogICAgICAgIHsKICAgICAgICAgICAgbG9uZyBsb25nIHY9eC5maXJzdDsKICAgICAgICAgICAgbG9uZyBsb25nIHdlaWdodF92PXguc2Vjb25kOwogICAgICAgICAgICBsb25nIGxvbmcgbmQ9ZHUrd2VpZ2h0X3Y7CgogICAgICAgICAgICBpZihzdGF0ZT09MCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYobmQ8ZFt2XVswXSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBkW3ZdWzFdPWRbdl1bMF07CiAgICAgICAgICAgICAgICAgICAgZFt2XVswXT1uZDsKCiAgICAgICAgICAgICAgICAgICAgcHEucHVzaCh7ZFt2XVswXSx2LDB9KTsKCiAgICAgICAgICAgICAgICAgICAgaWYoZFt2XVsxXSE9SU5GKQogICAgICAgICAgICAgICAgICAgICAgICBwcS5wdXNoKHtkW3ZdWzFdLHYsMX0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZihkW3ZdWzBdPG5kICYmIG5kPGRbdl1bMV0pCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgZFt2XVsxXT1uZDsKICAgICAgICAgICAgICAgICAgICBwcS5wdXNoKHtkW3ZdWzFdLHYsMX0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZihzdGF0ZT09MSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYoZFt2XVswXTxuZCAmJiBuZDxkW3ZdWzFdKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGRbdl1bMV09bmQ7CiAgICAgICAgICAgICAgICAgICAgcHEucHVzaCh7ZFt2XVsxXSx2LDF9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKdm9pZCBpbnB1dCgpCnsKICAgIGNpbj4+bj4+bTsKCiAgICBmb3IobG9uZyBsb25nIGk9MTtpPD1tO2krKykKICAgIHsKICAgICAgICBsb25nIGxvbmcgdSx2LHc7CiAgICAgICAgY2luPj51Pj52Pj53OwoKICAgICAgICB2dFt1XS5wdXNoX2JhY2soe3Ysd30pOwogICAgICAgIHZ0W3ZdLnB1c2hfYmFjayh7dSx3fSk7CiAgICB9Cn0KCnZvaWQgb3V0cHV0KCkKewogICAgZm9yKGxvbmcgbG9uZyBpPTE7aTw9bjtpKyspCiAgICB7CiAgICAgICAgZm9yKGxvbmcgbG9uZyBqPTA7ajw9MTtqKyspCiAgICAgICAgewogICAgICAgICAgICBkW2ldW2pdPUlORjsKICAgICAgICB9CiAgICB9CgogICAgZFsxXVswXT0wOwoKICAgIGRpamlrc3RyYSgpOwoKICAgIGlmKGRbbl1bMV09PUlORikKICAgIHsKICAgICAgICBjb3V0PDwtMTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgY291dDw8ZFtuXVsxXTsKfQoKaW50IG1haW4oKQp7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsKCiAgICBpbnB1dCgpOwogICAgb3V0cHV0KCk7Cn0=