#include<bits/stdc++.h>
using namespace std;
struct node{
int b,z;
};
vector<node>a[1505];
int v[50005];
int n,m;
int mi=INT_MAX;
bool f=false;
void dfs(int x,int cnt){
if(cnt>=mi)return;
if(x==n){
f=true;
mi=min(mi,cnt);
return;
}
for(int i=0;i<a[x].size();i++){
if(v[a[x][i].b]==0){
v[a[x][i].b]=1;
dfs(a[x][i].b,cnt+a[x][i].z);
v[a[x][i].b]=0;
}
}
}
int main(){
cin>>n>>m;
for(int i=0;i<m;i++){
int x,y,z;
cin>>x>>y>>z;
a[x].push_back({y,-z});
}
dfs(1,0);
if(f) cout<<-mi;
else cout<<-1;
return 0;
}