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 u,w in g[v]:
      if d[u] > d[v]+w:
        d[u] = d[v]+w
        heappush(que,(d[u],u))
  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)
