#include<iostream>
#include<vector>
#include<queue>
#include<cmath>
#define maxn 1510
using namespace std;
int n, m, ans;
int f[maxn], ind[maxn];
struct node{
int v, w;
};
vector<node>v[maxn];
queue<int>q;
int main()
{
cin>>n>>m;
for(int i = 0; i < m; i++){
int u;
node no;
cin>>u>>no.v>>no.w;
ind[no.v]++;
v[u].push_back(no);
}
q.push(1);
while(!q.empty()){
int x = q.front();
q.pop();
for(int i = 0; i < v[x].size(); i++){
if(v[x][i].v == n)ans = 1;
f[v[x][i].v] = max(f[v[x][i].v], f[x] + v[x][i].w);
ind[v[x][i].v]--;
if(ind[v[x][i].v] == 0){
q.push(v[x][i].v);
}
}
}
if(ans == 0)cout<<"-1";
else cout<<f[n];
return 0;
}