#include<bits/stdc++.h>
using namespace std;
const int N=1510;
int n,m,dis[N];
struct node{
int v,w;
};
vector<node> adj[N];
void solve(){
memset(dis,-0x3f,sizeof(dis));
dis[1]=0;
for(int i=1;i<n;i++){
bool f=1;
for(int u=1;u<=n;u++){
for(auto x:adj[u]){
int v=x.v,w=x.w;
if(dis[u]+w>dis[v]){
f=0;
dis[v]=dis[u]+w;
}
}
}
if(f) break;
}
if(dis[n]!=-0x3f3f3f3f) cout<<dis[n];
else cout<<-1;
}
int main(){
cin>>n>>m;
int u,v,w;
while(m--){
cin>>u>>v>>w;
adj[u].push_back({v,w});
}
solve();
return 0;
}