#include<bits/stdc++.h>
using namespace std;
struct edge{
int to,value;
};
struct node{
int d,z;
};
vector<edge> l[1505];
queue<node> q;
int ans=-1;
int main(){
int n,m; scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++){
int u,v,w; scanf("%d%d%d",&u,&v,&w);
l[u].push_back(edge{v,w});
}
q.push(node{1,0});
while(!q.empty()){
node k=q.front(); q.pop();
if(k.d==n){
ans=max(ans,k.z);
continue;
}
for(int i=0;i<l[k.d].size();i++){
q.push(node{l[k.d][i].to,l[k.d][i].value+k.z});
}
}
cout<<ans;
return 0;
}