#include<cstdio>
#include<queue>
#define ll long long
#define maxn 1510
#define maxm 50010
using namespace std;
ll n,m,head[maxn],nxt[maxm],to[maxm],wgh[maxm],cnt,dis[maxn],vis[maxn];
queue<ll> q;
void add(ll u,ll v,ll w){
nxt[++cnt]=head[u];
to[cnt]=v;
wgh[cnt]=w;
head[u]=cnt;
}
int main(){
scanf("%lld%lld",&n,&m);
for(int i=2;i<=n;i++)
dis[i]=-1e18;
for(int i=1;i<=m;i++){
ll u,v,w;
scanf("%lld%lld%lld",&u,&v,&w);
add(u,v,w);
}
vis[1]=1;
q.push(1);
while(!q.empty()){
int f=q.front();
q.pop();
for(int i=head[f];i;i=nxt[i]){
int ti=to[i],wi=wgh[i];
if(dis[f]+wi>dis[ti] && dis[f]>=0){
dis[ti]=dis[f]+wi;
if(!vis[ti])
q.push(ti);
vis[ti]=1;
}
}
}
if(dis[n]==-1e18)
printf("-1\n");
else
printf("%lld\n",dis[n]);
return 0;
}