#include <bits/stdc++.h>
using namespace std;
#define MAX 1505
#define INF 0x3F3F3F3F
int n, m;
vector<int> edges[MAX];
vector<int> deg[MAX];
int indeg[MAX];
int longest[MAX];
int TropSort(){
queue<int> st;
for(int i=2; i<=n; i++){
longest[n] = -INF;
if(indeg[i] == 0) st.push(i);
}
while(!st.empty()){
int p = st.front(); st.pop();
for(auto &q: edges[p]){
indeg[q]--;
if(indeg[q] == 0) st.push(q);
}
}
st.push(1);
while(!st.empty()){
int p = st.front(); st.pop();
for(int i=0; i<edges[p].size(); i++){
longest[edges[p][i]] = max(longest[edges[p][i]],
longest[p] + deg[p][i]);
indeg[edges[p][i]]--;
if(indeg[edges[p][i]] == 0) st.push(edges[p][i]);
}
}
if(longest[n] == -INF) return -1;
else return longest[n];
}
int main(){
cin >> n >> m;
int u, v, w;
for(int i=0; i<m; i++){
cin >> u >> v >> w;
edges[u].push_back(v);
deg[u].push_back(w);
indeg[v]++;
}
int ans = TropSort();
cout << ans;
return 0;
}