#include<bits/stdc++.h>
#define MAXN 50000
#define INF -1e18
using namespace std;
long long n, m, u, v, w;
struct Node{
long long v, w;
};
vector<Node> linker[MAXN];
long long ru[MAXN], ANS[MAXN];
bool vis[MAXN];
int main(){
cin >> n >> m;
memset(vis, false, sizeof(vis));
for(long long i = 1; i <= n; i++) ANS[i] = INF;
ANS[1] = 0;
for(long long i = 1; i <= m; i++){
cin >> u >> v >> w;
linker[u].push_back({v, w});
ru[v]++;
}
queue<long long> q;
q.push(1);
while(!q.empty()){
long long a = q.front();
q.pop();
for(long long i = 0; i < linker[a].size(); i++){
long long b = linker[a][i].v;
long long wi = linker[a][i].w;
ru[b]--;
ANS[b] = max(ANS[b], wi + ANS[a]);
if(ru[b] == 0) q.push(b);
}
}
if(ANS[n] == INF) cout << -1;
else cout << ANS[n];
return 0;
}