#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define pii pair<int, int>
#define For(a, b, c) for(int a = b; a <= c; a++)
#define Ror(a, b, c) for(int a = b; a >= c; a--)
const int N = 5e4 + 5, M = 2e5 + 5;
int n,m;
int rd[N], ans[N];
queue<int>q;
vector<pii> e[N];
bool vis[N];
void toop(){
For(i, 1, n)
if(rd[i]==0) q.push(i);
while(!q.empty()) {
int u = q.front();
q.pop();
for(auto x : e[u]) {
int v = x.first, w = x.second;
rd[v]--;
if(vis[u] == true){
ans[v] = max(ans[v], ans[u] + w);
vis[v] = true;
}
if(rd[v] == 0) q.push(v);
}
}
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin >> n >> m;
For(i, 1, m) {
int u, v, w;
cin >> u >> v >> w;
e[u].emplace_back(v, w);
rd[v]++;
}
vis[1] = true;
ans[n] = -1e9;
toop();
if(ans[n] != -1e9) cout << ans[n];
else cout << -1;
return 0;
}