import heapq N,M = map(int,input().split()) C = [[0 for _ in range(N+1)] for _ in range(N+1)] A = [] for _ in range(M): h,w,c = map(int,input().split()) C[h][w] = c A.append((h,w)) INFTY = 10**12+10000 dist = [[[INFTY for _ in range(2)] for _ in range(N+1)] for _ in range(N+1)] dist[1][1][0] = 0 visited = [[[False for _ in range(2)] for _ in range(N+1)] for _ in range(N+1)] heap = [(0,1,1,0)] while heap: d,i,j,s = heapq.heappop(heap) if dist[i][j][s]d+1+C[i+di][j+dj]: dist[i+di][j+dj][1] = d+1+C[i+di][j+dj] heapq.heappush(heap,(d+1+C[i+di][j+dj],i+di,j+dj,1)) else: if 1<=i+di<=N and 1<=j+dj<=N and visited[i+di][j+dj][0]==False and dist[i+di][j+dj][0]>d+1+C[i+di][j+dj]: dist[i+di][j+dj][0] = d+1+C[i+di][j+dj] heapq.heappush(heap,(d+1+C[i+di][j+dj],i+di,j+dj,0)) if 1<=i+di<=N and 1<=j+dj<=N and visited[i+di][j+dj][1]==False and dist[i+di][j+dj][1]>d+1: dist[i+di][j+dj][1] = d+1 heapq.heappush(heap,(d+1,i+di,j+dj,1)) print(min(dist[N][N]))