#include <bits/stdc++.h>
#define rep(i,n) for (int i = 0; i < (n); ++i)
using namespace std;
using ll = long long;
using P = pair<ll,ll>;
#define chmax(x,y) x = max(x,y)
#define chmin(x,y) x = min(x,y)

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;
rep(i,m){
    ll l,r,c;
    cin>>l>>r>>c;
    --l,--r;
    to[l].push_back(make_pair(c,r));
}
for(int j=0;j<n;j++){
        to[j+1].push_back(make_pair(0,j));
    }
cout<<solve()<<endl;
return 0;
}