import sys
input = sys.stdin.readline

N,M=map(int,input().split())
B=[tuple(map(int,input().split())) for i in range(M)]
B.sort()


#Starry sky tree(一点取得、範囲min更新の1-indexed Segment tree. Aは0-indexedなことに注意.



seg_el=1<<((N+1).bit_length())# Segment treeの台の要素数
SEG=[1<<60]*(2*seg_el)# 1-indexedなので、要素数2*seg_el.Segment treeの初期値で初期化
SEG[1+seg_el]=0

def getvalue(n,seg_el):# 一点の値を取得
    i=n+seg_el
    ANS=1<<60
    
    ANS=min(SEG[i],ANS)
    i>>=1# 子ノードへ
    
    while i!=0:
        ANS=min(SEG[i],ANS)
        i>>=1

    return ANS

def updates(l,r,x):# 区間[l,r)のminを更新.
    L=l+seg_el
    R=r+seg_el

    while L<R:
        if L & 1:
            SEG[L]=min(x,SEG[L])
            L+=1

        if R & 1:
            R-=1
            SEG[R]=min(x,SEG[R])
        L>>=1
        R>>=1

for l,r,c in B:
    x=getvalue(l,seg_el)
    updates(l,r+1,x+c)

if getvalue(N,seg_el)==1<<60:
    print(-1)
else:
    print(getvalue(N,seg_el))
