#1AC,#2~9全RE了
QAQ
#include <bits/stdc++.h>
#define int long long
using namespace std;
struct edge
{
int u,v,w,next;
}e[50005];
int n,en=0,h[1505],dis[1505];
bool vis[1505];
queue<int> q;
void add(int u,int v,int w)
{
en++;
e[en].u=u;
e[en].v=v;
e[en].w=w;
e[en].next=h[u];
h[u]=en;
return;
}
void SPFA()
{
for(int i=2;i<=n;i++)dis[i]=LLONG_MIN/3;
q.push(1);vis[1]=true;
while(!q.empty())
{
int u=q.front();
q.pop();vis[u]=false;
for(int i=h[u];i!=0;i=e[i].next)
{
int v=e[i].v,w=e[i].w;
if(dis[v]<dis[u]+w)
{
dis[v]=dis[u]+w;
if(!vis[v])
{
q.push(v);
vis[v]=true;
}
}
}
}
return;
}
signed main()
{
int m;
scanf("%d %d",&n,&m);
while(m--)
{
int u,v,w;
scanf("%d %d %d",&u,&v,&w);
add(u,v,w);
}
SPFA();
if(dis[n]>-1e18)printf("%lld",dis[n]);
else printf("-1");
return 0;
}