#include<bits/stdc++.h>
using namespace std;
const long long MaxN = 2e5 + 5, MaxW = 15, MaxState = 2, INF = 1e18;
long long n,m,d[MaxN][MaxW][MaxState];
vector<pair<long long,long long>> vt[MaxN];
void dijikstra()
{
priority_queue<tuple<long long,long long,long long,long long>,
vector<tuple<long long,long long,long long,long long>>,
greater<tuple<long long,long long,long long,long long>>> pq;
pq.push({0,1,0,1});
while(!pq.empty())
{
long long du = get<0>(pq.top());
long long u = get<1>(pq.top());
long long w = get<2>(pq.top());
long long state = get<3>(pq.top());
pq.pop();
if(du != d[u][w][state]) continue;
for(auto x : vt[u])
{
long long v = x.first;
long long weight_v = x.second;
if(state == 0)
{
if(d[v][weight_v][1] > du + w * weight_v)
{
d[v][weight_v][1] = du + w * weight_v;
pq.push({d[v][weight_v][1],v,weight_v,1});
}
}
if(state == 1)
{
if(d[v][weight_v][0] > du)
{
d[v][weight_v][0] = du;
pq.push({d[v][weight_v][0],v,weight_v,0});
}
}
}
}
}
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<MaxW; j++)
{
for(long long k=0; k<=1; k++)
{
d[i][j][k] = INF;
}
}
}
d[1][0][1] = 0;
dijikstra();
long long ans = INF;
for(long long i=0; i<MaxW; i++)
{
ans = min(ans,d[n][i][1]);
}
if(ans == INF)
{
cout << -1;
return;
}
cout << ans;
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
input();
output();
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGxvbmcgbG9uZyBNYXhOID0gMmU1ICsgNSwgTWF4VyA9IDE1LCBNYXhTdGF0ZSA9IDIsIElORiA9IDFlMTg7Cgpsb25nIGxvbmcgbixtLGRbTWF4Tl1bTWF4V11bTWF4U3RhdGVdOwp2ZWN0b3I8cGFpcjxsb25nIGxvbmcsbG9uZyBsb25nPj4gdnRbTWF4Tl07Cgp2b2lkIGRpamlrc3RyYSgpCnsKICAgIHByaW9yaXR5X3F1ZXVlPHR1cGxlPGxvbmcgbG9uZyxsb25nIGxvbmcsbG9uZyBsb25nLGxvbmcgbG9uZz4sCiAgICAgICAgICAgICAgICAgICB2ZWN0b3I8dHVwbGU8bG9uZyBsb25nLGxvbmcgbG9uZyxsb25nIGxvbmcsbG9uZyBsb25nPj4sCiAgICAgICAgICAgICAgICAgICBncmVhdGVyPHR1cGxlPGxvbmcgbG9uZyxsb25nIGxvbmcsbG9uZyBsb25nLGxvbmcgbG9uZz4+PiBwcTsKCiAgICBwcS5wdXNoKHswLDEsMCwxfSk7CgogICAgd2hpbGUoIXBxLmVtcHR5KCkpCiAgICB7CiAgICAgICAgbG9uZyBsb25nIGR1ID0gZ2V0PDA+KHBxLnRvcCgpKTsKICAgICAgICBsb25nIGxvbmcgdSA9IGdldDwxPihwcS50b3AoKSk7CiAgICAgICAgbG9uZyBsb25nIHcgPSBnZXQ8Mj4ocHEudG9wKCkpOwogICAgICAgIGxvbmcgbG9uZyBzdGF0ZSA9IGdldDwzPihwcS50b3AoKSk7CiAgICAgICAgcHEucG9wKCk7CgogICAgICAgIGlmKGR1ICE9IGRbdV1bd11bc3RhdGVdKSBjb250aW51ZTsKCiAgICAgICAgZm9yKGF1dG8geCA6IHZ0W3VdKQogICAgICAgIHsKICAgICAgICAgICAgbG9uZyBsb25nIHYgPSB4LmZpcnN0OwogICAgICAgICAgICBsb25nIGxvbmcgd2VpZ2h0X3YgPSB4LnNlY29uZDsKCiAgICAgICAgICAgIGlmKHN0YXRlID09IDApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmKGRbdl1bd2VpZ2h0X3ZdWzFdID4gZHUgKyB3ICogd2VpZ2h0X3YpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgZFt2XVt3ZWlnaHRfdl1bMV0gPSBkdSArIHcgKiB3ZWlnaHRfdjsKICAgICAgICAgICAgICAgICAgICBwcS5wdXNoKHtkW3ZdW3dlaWdodF92XVsxXSx2LHdlaWdodF92LDF9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYoc3RhdGUgPT0gMSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYoZFt2XVt3ZWlnaHRfdl1bMF0gPiBkdSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBkW3ZdW3dlaWdodF92XVswXSA9IGR1OwogICAgICAgICAgICAgICAgICAgIHBxLnB1c2goe2Rbdl1bd2VpZ2h0X3ZdWzBdLHYsd2VpZ2h0X3YsMH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9Cgp2b2lkIGlucHV0KCkKewogICAgY2luID4+IG4gPj4gbTsKCiAgICBmb3IobG9uZyBsb25nIGk9MTsgaTw9bTsgaSsrKQogICAgewogICAgICAgIGxvbmcgbG9uZyB1LHYsdzsKICAgICAgICBjaW4gPj4gdSA+PiB2ID4+IHc7CgogICAgICAgIHZ0W3VdLnB1c2hfYmFjayh7dix3fSk7CiAgICAgICAgdnRbdl0ucHVzaF9iYWNrKHt1LHd9KTsKICAgIH0KfQoKdm9pZCBvdXRwdXQoKQp7CiAgICBmb3IobG9uZyBsb25nIGk9MTsgaTw9bjsgaSsrKQogICAgewogICAgICAgIGZvcihsb25nIGxvbmcgaj0wOyBqPE1heFc7IGorKykKICAgICAgICB7CiAgICAgICAgICAgIGZvcihsb25nIGxvbmcgaz0wOyBrPD0xOyBrKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGRbaV1bal1ba10gPSBJTkY7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgZFsxXVswXVsxXSA9IDA7CgogICAgZGlqaWtzdHJhKCk7CgogICAgbG9uZyBsb25nIGFucyA9IElORjsKCiAgICBmb3IobG9uZyBsb25nIGk9MDsgaTxNYXhXOyBpKyspCiAgICB7CiAgICAgICAgYW5zID0gbWluKGFucyxkW25dW2ldWzFdKTsKICAgIH0KCiAgICBpZihhbnMgPT0gSU5GKQogICAgewogICAgICAgIGNvdXQgPDwgLTE7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGNvdXQgPDwgYW5zOwp9CgppbnQgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwoKICAgIGlucHV0KCk7CiAgICBvdXRwdXQoKTsKfQ==