#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using P = pair<ll, ll>;
int n, m;
vector<P> to[100005];
vector<ll> dist(100005, LLONG_MAX);
ll solve() {
  priority_queue<P, vector<P>, greater<P>> pq;
  dist[0] = 0;
  pq.push(P(0, 0));
  while (pq.size() > 0) {
    P cur = pq.top();
    pq.pop();
    ll d = cur.first;
    ll u = cur.second;
    if (d > dist[u]) continue;
    for (P nx : to[u]) {
      ll duv = nx.first;
      ll v = nx.second;
      if (dist[v] > d + duv) {
        dist[v] = d + duv;
        pq.push(P(dist[v], v));
      }
    }
  }
  return dist[n - 1] == LLONG_MAX ? -1 : dist[n - 1];
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cin >> n >> m;
  for (int i = 0; i < (m); ++i) {
    ll l, r, c;
    cin >> l >> r >> c;
    --l, --r;
    to[l].push_back(make_pair(c, r));
    for (int j = l; j < r; j++) {
      to[j + 1].push_back(make_pair(0, j));
    }
  }
  cout << solve() << endl;
  return 0;
}
