#include<bits/stdc++.h>
#define AC return 0;
#define sc(n) scanf("%d",&(n))
#define pr(n) printf("%lld",(n))
#define hh puts("")
#define int long long
#define kg printf(" ")
using namespace std;
namespace fr{
int read()
{
int x=0,flag=1;
char ch=getchar();
for(;ch>'9'||ch<'0';ch=getchar())if(ch=='-')flag=-1;
for(;ch<='9'&&ch>='0';ch=getchar())x=(x<<3)+(x<<1)+ch-'0';
return flag*x;
}
}
using namespace fr;
struct node{int v,w;};
const int N =1e4+5;
vector<node>g[N];
int in[N];
int ans;
int dis[N];
signed main()
{
int n=read(),m=read();
for(int i=1;i<=m;i++)
{
int u=read(),v=read(),w=read();
g[u].push_back({v,w});
in[v]++;
}
queue<int> q;
for(int i=2;i<=n;i++)
{
dis[i]= -1e9;
if(in[i]==0)
q.push(i);
}
while(q.size()){
int p=q.front();
q.pop();
for(auto i:g[p])
{
if(!--in[i.v])q.push(i.v);
}
}
q.push(1);
while(q.size()){
int now=q.front();
q.pop();
for(auto i:g[now])
{
if(dis[i.v]<dis[now]+i.w)
{
dis[i.v]=dis[now]+i.w;
if(!--in[i.v])q.push(i.v);
}
}
}
if(dis[n]==-1e9)puts("-1");
else
pr(dis[n]);
AC
}
这是记录