#include <bits/stdc++.h>
using namespace std;
struct lrc {
  long long l, r, c;
  bool operator<(const lrc a) const {
    if (l == a.l) return r < a.r;
    return l < a.l;
  }
};
lrc a[100005];
long long ans[100005];
set<long long> s;
int main() {
  int n, m;
  cin >> n >> m;
  for (int i = 0; i <= n; i++) ans[i] = 1e18;
  for (int i = 0; i < m; i++) cin >> a[i].l >> a[i].r >> a[i].c;
  sort(a, a + m);
  s.insert(1);
  ans[1] = 0;
  for (int i = 0; i < m; i++) {
    auto o = s.lower_bound(a[i].l);
    if ((*o) < a[i].l) continue;
    ans[a[i].r] = min(ans[*o] + a[i].c, ans[a[i].r]);
    s.insert(a[i].r);
  }
  if (!s.count(n)) {
    cout << "-1";
    return 0;
  }
  cout << ans[n];
}
