#include <bits/stdc++.h>
using namespace std;
long long n, m, ans = 0;
void Main() {
  cin >> n >> m;
  vector<pair<pair<long long, long long>, long long>> LRC(m);
  for (long long i = (0); i < (m); i++) {
    cin >> LRC.at(i).first.first >> LRC.at(i).first.second >> LRC.at(i).second;
    LRC.at(i).first.first--;
    LRC.at(i).first.second--;
    LRC.at(i).first.second *= (-1);
  }
  sort((LRC).begin(), (LRC).end());
  for (long long i = (0); i < (m); i++) {
    LRC.at(i).first.second *= (-1);
  }
  vector<long long> cost(n, 1145141919810893);
  cost[0] = 0;
  priority_queue<long long> QWE;
  QWE.push(0);
  for (long long i = (0); i < (m); i++) {
    queue<long long> Q;
    long long t = 1145141919810893;
    while (!QWE.empty()) {
      t = QWE.top();
      QWE.pop();
      if (t < LRC.at(i).first.first) {
        break;
      }
      cost.at(LRC.at(i).first.second) =
          min(cost.at(LRC.at(i).first.second), cost.at(t) + LRC.at(i).second);
      Q.push(t);
    }
    while (!Q.empty()) {
      QWE.push(Q.front());
      Q.pop();
    }
    QWE.push(LRC.at(i).first.second);
  }
  if (cost.at(n - 1) < 1145141919810893)
    cout << cost.at(n - 1) << endl;
  else
    cout << -1 << endl;
}
int main() {
  Main();
  return 0;
}
