from heapq import heappop, heappush

N,M = map(int,input().split())
LRC = [list(map(int,input().split())) for _ in range(M)]

INF = float('inf')
def dijkstra(s,n,g): # sからの最短距離 頂点数n g[v]=[(u1,w1),(u2,w2)....]:vからuへの有向辺があり、重みw
  que = []
  d = [INF for _ in range(n)]
  d[s] = 0
  heappush( que,(0,s) )
  while len(que)>0:
    p =  heappop(que)
    v = p[1]
    if d[v] < p[0]:
      continue
    for i in range(len(g[v])):
      edge = g[v][i]
      if d[edge[0]] > d[v] + edge[1]:
        d[edge[0]] = d[v] + edge[1]
        heappush( que,(d[edge[0]] , edge[0]) )
  return d

G = [[] for _ in range(N)]
for i in range(N-1):
  G[i+1].append((i,0))
for l,r,c in LRC:
  l -= 1
  r -= 1
  G[l].append((r,c))

p = dijkstra(0,N,G)[N-1]
print(p if p != INF else -1)
