#include<bits/stdc++.h>
using namespace std;
struct ec
{
int to,next,v;
}e[1000001];
int n,m,head[1000001],k,jl[1000001],vis[1000001];
void add(int u,int v,int w)
{
e[++k].to=v;
e[k].next=head[u];
head[u]=k;
e[k].v=w;
}
struct node
{
int d,jd;
bool operator < (const node &a) const
{
return a.d>d;
}
};
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
jl[i]=-114514;
}
for(int i=1;i<=m;i++)
{
int u,v,w;
cin>>u>>v>>w;
add(u,v,w);
}
priority_queue<node>pq;
pq.push((node){0,1});
jl[1]=0;
while(!pq.empty())
{
node a=pq.top();
pq.pop();
if(vis[a.jd]==1)
{
continue;
}
vis[a.jd]=1;
for(int u=head[a.jd];u;u=e[u].next)
{
if(jl[e[u].to]<jl[a.jd]+e[u].v)
{
jl[e[u].to]=jl[a.jd]+e[u].v;
pq.push((node){jl[e[u].to],e[u].to});
}
}
}
if(jl[n]==-114514)puts("-1");
else cout<<jl[n];
return 0;
}