#include <bits/stdc++.h>
using namespace std;
int n, m, s, t;
long long dist[2501];
bool b[2501];
vector<pair<int, int> > Q[2501];
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> q;
inline void bfs() {
memset(dist, 127, sizeof(dist));
dist[1] = 0;
q.push(make_pair(0, 1));
while (!q.empty()) {
pair<int, int> x;
x = q.top();
q.pop();
if (b[x.second])
continue;
b[x.second] = true;
for (int i = 0; i < Q[x.second].size(); i++) {
int v = Q[x.second][i].second;
int w = Q[x.second][i].first;
if (dist[v] > w + dist[x.second] + 0LL)
dist[v] = w + dist[x.second];
q.push(make_pair(dist[v], v));
}
}
return;
}
int main() {
scanf("%d%d", &n, &m);
for (; m--; ) {
int x, y, w;
scanf("%d%d%d", &x, &y, &w);
Q[x].push_back(make_pair(-w, y));
}
bfs();
printf("%lld ", -dist[n]);
return 0;
}