#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include <string>
#include<cmath>
#include<sstream>
#include<vector>
#include<map>
#include <stack>
#include<list>
#include <queue>
#include<unordered_map>
#include<bitset>
using namespace std;
const int N = 1510;
int n, m;
int e[N], ne[N], idx, h[N];
int res=-1;
bool st[N];
int d[N];
void add(int a, int b)//建立邻接表
{
e[idx] = b;
ne[idx] = h[a];
h[a] = idx++;
}
void dfs(int x)
{
if (x == n)//递归终点
{
res = max(res, d[x]);
d[x] = 0;
return;
}
for (int i = h[x]; i != -1; i = ne[i])//遍历与x相连的所有节点
{
if (!st[e[i]])
{
st[e[i]] = true;
d[e[i]] += d[x];
dfs(e[i]);
d[e[i]] -= d[x];//回溯
st[e[i]] = false;//回溯
}
}
}
int main()
{
memset(h, -1, sizeof h);
cin >> n >> m;
while (m--)
{
int u, v, w;
cin >> u >> v >> w;
add(u, v);//加入图中:u->v
if(w>d[u])
d[u] = w;//将距离算在了起点上
}
dfs(1);
cout << res;
return 0;
}