#include<bits/stdc++.h>
using namespace std;
long long n\
,\
m\
,\
s\
=\
1\
,\
dis\
[10010]\
,\
is_q\
[10010];
struct\
node\
{\
int\
v\
,\
c\
;\
};
vector\
<\
node\
>\
dq\
[10010];
void \
spfa\
()\
{
for\
(\
int\
i\
=\
1\
;\
i\
<=\
n\
;\
i\
++\
)\
dis\
[i]\
=\
-2e9;
queue\
<\
int\
>\
q;
q\
.push\
(\
s\
);
dis\
[\
s\
]\
=\
0\
,\
is_q\
[\
s\
]\
=\
1;
while\
(\
q\
.empty\
(\
)\
==\
false\
)\
{
int\
u\
=\
q\
.front\
(\
);
q\
.pop\
(\
);
is_q\
[\
u\
]\
=\
0;
for\
(\
int\
i\
=\
0\
;\
i\
<\
dq\
[\
u\
]\
.size\
(\
)\
;\
i\
++\
)\
{
int\
v\
=\
dq\
[\
u\
]\
[\
i\
]\
.v\
,\
c\
=\
dq\
[\
u\
]\
[\
i\
]\
.c;
if\
(\
dis\
[\
v\
]\
<\
dis\
[\
u\
]\
+\
c\
)\
{
dis\
[\
v\
]\
=\
dis\
[\
u\
]\
+\
c;
if\
(\
is_q\
[\
v\
]\
==\
0\
)\
{
q\
.push\
(\
v\
);
is_q\
[\
v\
]\
=\
1;
}
}
}
}
}
int \
main\
(\
)\
{
cin\
>>\
n\
>>\
m;
for\
(\
int\
i\
=\
1\
;\
i\
<=\
m\
;\
i\
++\
)\
{
int\
u1\
,\
v1\
,\
c1;
cin\
>>\
u1\
>>\
v1\
>>\
c1;
dq\
[\
u1\
]\
.push_back\
(\
node\
{\
v1\
,\
c1\
}\
);
}
spfa\
(\
);
if\
(\
dis\
[\
n\
]\
==\
-2e9\
) \
cout\
<<\
-1;
else\
cout\
<<\
dis\
[\
n\
];
return\
0;
}