/*
BZQ
2020/10/11
P1250 种树
*/
#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
using namespace std;
const int manx = 1e5;
struct Edge{
int u,v,nxt,w;
}e[manx];
int head[manx],cnt,n,m;
void add(int u,int v,int w){
e[++cnt].nxt = head[u];
e[cnt].u = u;
e[cnt].v = v;
e[cnt].w = w;
head[u] = cnt;
}
queue<int>q;
int dis[manx],in[manx];
bool vis[manx];
void spfa(int u){
memset(vis,false,sizeof(vis));
vis[u] = true;
memset(dis,-1,sizeof(dis));
dis[u] = 0;
memset(in,0,sizeof(in));
in[u] = 1;
q.push(u);
while(!q.empty()){
u = q.front();
vis[u] = false;
q.pop();
for(int i = head[u];i;i = e[i].nxt){
int v = e[i].v;
int w = e[i].w;
if(dis[u] + w > dis[v])
{
dis[v] = dis[u] + w;
if(!vis[v]){
q.push(v);
vis[v] = true;
in[v]++;
if(in[v] > n + 1){
cout<<"no";
}
}
}
}
}
}
int main(){
cin >> n >> m;
for (int i = 1;i <= m; i++){
int a,b,c;
cin>>a>>b>>c;
add(b,a,c);
}
for (int i = 1;i <= n;i ++){
add(0,i,0);
}
spfa(0);
cout<<dis[n-1];
}