#include <bits/stdc++.h>
using namespace std ;
#define leng 50001
priority_queue< pair< int ,int > > q;
int tot , head[leng] , ver[leng] , dis[leng] , edge[leng] ;
int d[leng] , p[leng] ;
int pg ;
int n ;
void pd ( int x ) ;
void add ( int x , int y , int z ) ;
void Dij ( ) ;
int main ( ){
int m ;
cin >> n >> m ;
for ( int i = 1 ; i <= m ; ++i ){
int u , v , w ;
cin >> u >> v >> w ;
add ( u , v , w );
}
pd ( 1 ) ;
if ( pg == 0 ) {
cout << -1 ;return 0 ;
}
Dij ( ) ;
cout << d[n] ;
return 0 ;
}
void add( int x , int y , int z ){
edge[++tot] = head[x] ;
head[x] = tot ;
ver[tot] = y ;
dis[tot] = z ;
}
void Dij ( ) {
d[1] = 0 ;
q.push(make_pair(0,1));
while ( q.size( ) ){
int x = q.top( ).second;
q.pop( ) ;
if (p[x]) continue ;
p[x] = 1 ;
for ( int i = head[x] ; i ; i = edge[i] ){
int y = ver[i] , z = dis[i] ;
if ( d[y] < d[x] + z ){
d[y] = d[x] + z ;
q.push(make_pair(d[y],y));
}
}
}
}
void pd ( int x ){
for ( int i = head[x] ; i ; i = edge[i] ){
int y = ver[i] ;
if ( y == n ){pg = 1 ; break ;}
pd( y ) ;
}
}