#include<iostream>
#define maxn 1505
using namespace std;
long long n, m, x1, x2, x3, a[maxn][maxn], f[maxn];//a[][]两点间最大路径,f[]点到n点的最大路径
bool b[maxn][maxn],c[maxn];//b[][]判断两点是否相连,c[]判断点是否与n点相连
int main() {
cin >> n >> m;
for (int i = 1; i <= m; i++) {
cin >> x1 >> x2 >> x3;
if (!b[x1][x2]) {
a[x1][x2] = x3;
b[x1][x2] = 1;
}
else
if (x3 > a[x1][x2]) a[x1][x2] = x3;
}
c[n] = 1;
for (int i = n; i >= 1; i--) {
for (int j = 1; j < i; j++) {
if (b[j][i]) {
if (!c[j]) {
f[j] = f[i] + a[j][i];
c[j] = c[i];
}
else
if (f[i] + a[j][i] > f[j])
f[j] = f[i] + a[j][i];
}
}
}
if (!c[1])
cout << -1 << endl;
else
cout << f[1] << endl;
system("pause");
return 0;
}