#include <iostream>
#include <vector>
#include <algorithm>
#include <stack>
#include <set>
#include <queue>
#include <map>
using namespace std;
typedef long long int ll;

int main(){
	cin.tie(nullptr);
	ios::sync_with_stdio(false);
	int n; cin >> n;
	int m; cin >> m;
	vector<pair<int,pair<int,ll> > >v;
	for(int i=0;i<m;i++){
		ll l,r,c; cin >> l >> r >> c;
		v.push_back(make_pair(l,make_pair(r,c)));
	}
	sort(v.begin(),v.end());
	for(int i=0;i<n;i++){
		dp[i]=1e15;
	}
	map<int,ll> mp;
	set<int> s;
	s.insert(1);
	s.insert(n);
	mp[1]=0;
	mp[n]=1e15;
	for(int i=0;i<m;i++){
		int k=*(s.upper_bound(v[i].first-1));
		//cout << k << endl;
		if(k==1||(mp[k]<1e15&&mp[k]>0)){
			s.insert(v[i].second.first);
			if(mp[v[i].second.first]==0){
				mp[v[i].second.first]=mp[k]+v[i].second.second;
			}
			else{
				mp[v[i].second.first]=min(mp[v[i].second.first],mp[k]+v[i].second.second);
			}
		}
	}
	//cout << mp[3] << endl;
	if(mp[n]==1e15){
		cout << -1 << endl;
	}
	else{
		cout << mp[n] << endl;
	}
}