#include<bits/stdc++.h>
using namespace std;
int n,m,cnt,tou=0,wei=0;
int head[55001],dis[55001];
int lie[55001];
bool pan[55001];
bool flag=0;
struct B
{
int v,w,net;
}edge[250001];
void add(int from,int to,int zhi)
{
edge[++cnt].v=to;
edge[cnt].w=zhi;
edge[cnt].net=head[from];
head[from]=cnt;
}
int main()
{
// freopen("in.in","r",stdin);
cin>>n>>m;
for(int i=1;i<=n;i++)
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
add(x,y,-z);
}
memset(dis,0x7f,sizeof(dis));
memset(pan,0,sizeof(pan));
lie[++wei]=1;
pan[1]=true;
dis[1]=0;
// for(int i=head[1];i;i=edge[i].net)
// dis[edge[i].v]=bian[1][edge[i].v];
while(tou<wei)
{
tou++;
int y=lie[tou];
pan[y]=false;
for(int i=head[y];i!=0;i=edge[i].net)
{
int v=edge[i].v;
if(dis[v]>dis[y]+edge[i].w)
{
dis[v]=dis[y]+edge[i].w;
if(!pan[v])
{
lie[++wei]=v;
pan[v]=true;
}
if(v==n) flag=1;
}
}
}
if(!flag) cout<<-1<<endl;
else cout<<-dis[n]<<endl;
return 0;
}