#include<bits/stdc++.h>
using namespace std;
struct st{
int next;
int v;
};
int n,m;
vector<st > vt[1505];
int in[1505];
queue<int > q;
int num[1505];
void tp(){
int cur;
q.push(1);
int nex,val;
while(!q.empty()){
cur = q.front();
q.pop();
for(int i = 0 ; i < vt[cur].size(); i++){
nex = vt[cur][i].next;
val = vt[cur][i].v;
in[nex]--;
if(num[cur] + val > num[nex]) num[nex] = num[cur] + val;
if(!in[nex]) q.push(nex);
}
}
if(num[n]) cout << num[n];
else cout << -1;
}
int main(){
int u,v,va;
cin >> n >> m;
for(int i = 1; i <= m ; i++){
scanf("%d%d%d",&u,&v,&va);
in[v]++;
vt[u].push_back((st){v,va});
}
tp();
return 0;
}