N,M=map(int,input().split())
LRC=sorted([list(map(int,input().split())) for i in range(M)])
d=[10**15]*N
d[0]=0
class SegTree:
    'min'
    def __init__(self,size,default=10**15):
        self.d=default
        self.N=size
        self.v=[self.d]*(2*self.N-1)
    def update(self,i,x):
        i+=self.N-1
        self.v[i]=x
        while i>0:
            i=(i-1)//2
            self.v[i]=min(self.v[i*2+1],self.v[i*2+2])
    def min(self,a,b,i=0,l=0,r=1e9):
        if r==1e9:
            r=self.N
        if r<=a or b<=l:
            return self.d
        if a<=l and r<=b:
            return self.v[i]
        return min(self.min(a,b,i*2+1,l,(l+r)//2),self.min(a,b,i*2+2,(l+r)//2,r))
s=SegTree(2**14)
s.update(0,0)
for l,r,c in LRC:
    d2=s.min(l-1,r-1)+c
    if d2<d[r-1]:
        d[r-1]=d2
        s.update(r-1,d2)
print(-1 if d[-1]==10**15 else d[-1])