#include <stdio.h>
int h[1505]={0},f[1505],value[1505][1505]={0};
struct road{
int a,b,next;
}num[100005];
int ru[1505]={0},chu[1505]={0};
int max(int a,int b){
if(a>b){
return a;
}else{
return b;
}
}
int main(){
for(int i=0;i<1505;i++){
f[i]=-100000;
}
int n,m;
scanf("%d %d",&n,&m);
int u,v,w;
for(int i=1;i<=m;i++){
scanf("%d %d %d",&u,&v,&w);
num[i].a=u;num[i].b=v;value[u][v]=w;num[i].next=h[u];h[u]=i;
ru[v]++;chu[u]++;
}
int p=0;
int blank[1505];
for(int i=1;i<=n;i++){
if(ru[i]==0){
blank[p++]=i;
f[i]=0;
}
}
int start=0,end=p,flag=0;
while(end>start){
int a=blank[start];
start++;
for(int k=h[a];k;k=num[k].next){
int b=num[k].b;
ru[b]--;
if(f[a]+value[a][b]>f[b]){
f[b]=f[a]+value[a][b];
}
if(ru[b]==0){
if(b==n){
flag=1;
break;
}
blank[end++]=b;
}
}
if(flag==1){
break;
}
}
if(flag==0){
printf("-1");
}else{
printf("%d",f[n]);
}
}