#include <bits/stdc++.h>
using namespace std;
struct segtree {
  vector<long long> data;
  long long n;
  segtree(long long nin) {
    n = pow(2, ceil(log(nin) / log(2)));
    long long size = 2 * n - 1;
    this->data.resize(size, 1e9);
  }
  void update(long long idx, long long val) { update(idx, val, 0, 0, n); }
  long long update(long long idx, long long val, long long node_id,
                   long long left, long long right) {
    if (!(left <= idx && idx < right)) {
      return data[node_id];
    }
    if (left + 1 < right) {
      long long mid = (left + right) / 2;
      long long L = update(idx, val, 2 * node_id + 1, left, mid);
      long long R = update(idx, val, 2 * node_id + 2, mid, right);
      data[node_id] = min(L, R);
    } else {
      data[node_id] = min(data[node_id], val);
    }
    return data[node_id];
  }
  long long get(long long l, long long r) { return get(l, r, 0, 0, n); }
  long long get(long long query_l, long long query_r, long long node_id,
                long long node_l, long long node_r) {
    if (query_r <= node_l || node_r <= query_l) {
      return 1e15;
    }
    if (query_l <= node_l && node_r <= query_r) {
      return data[node_id];
    }
    long long mid = (node_l + node_r) / 2;
    long long L = get(query_l, query_r, 2 * node_id + 1, node_l, mid);
    long long R = get(query_l, query_r, 2 * node_id + 2, mid, node_r);
    return min(L, R);
  }
};
long long N, M;
vector<pair<pair<long long, long long>, long long> > LRC;
int main() {
  cin >> N >> M;
  for (long long i = 0; i < M; i++) {
    long long l, r, c;
    cin >> l >> r >> c;
    l--;
    r--;
    LRC.push_back(make_pair(make_pair(l, r), c));
  }
  sort(LRC.begin(), LRC.end());
  segtree sg(N + 5);
  sg.update(0, 0);
  for (long long i = 0; i < M; i++) {
    long long left = LRC[i].first.first;
    long long right = LRC[i].first.second;
    long long cost = LRC[i].second;
    long long cur = sg.get(left, right + 1);
    sg.update(right, cur + cost);
  }
  long long ans = sg.get(N - 1, N);
  if (ans == 1e15) {
    cout << ans << endl;
  } else {
    cout << -1 << endl;
  }
}
