N,M = map(int,input().split()) H = N W = N S = [[0] * W for _ in range(H)] for i in range(M): h,w,c = map(int,input().split()) S[h-1][w-1] = c import heapq inf = 10 ** 18 dist = [[[inf] * 2 for _ in range(W)] for _ in range(H)] q = [(0,0,0,0)] dist[0][0][0] = 0 while q: d,h,w,flag = heapq.heappop(q) if dist[h][w][flag] < d:continue if h == N-1 and w == N -1:break for i,j in [(1,0),(-1,0),(0,1),(0,-1)]: if 0 <= h + i < H and 0 <= w + j < W: if S[h+i][w+j] == 0: if dist[h+i][w+j][flag] > d + 1: dist[h+i][w+j][flag] = d + 1 heapq.heappush(q,(d+1,h+i,w+j,flag)) else: c = S[h+i][w+j] if dist[h+i][w+j][flag] > d + 1 + c: dist[h+i][w+j][flag] = d + 1 + c heapq.heappush(q,(d+1+c,h+i,w+j,flag)) if flag == 0: if dist[h+i][w+j][1] > d + 1: dist[h+i][w+j][1] = d + 1 heapq.heappush(q,(d+1,h+i,w+j,1)) print(dist[-1][-1][1])