import heapq INFTY = 10**15 N,M = map(int,input().split()) FG = {i:[] for i in range(1,N+1)} BG = {i:[] for i in range(1,N+1)} for _ in range(M): a,b,c = map(int,input().split()) FG[a].append((b,c)) BG[b].append((a,c)) def dijkstra(s,G,dist): dist[s] = 0 que = [(0,s)] while que: d,x = heapq.heappop(que) if dist[x]d+c: dist[y] = d+c heapq.heappush(que,(dist[y],y)) dist1 = [INFTY]*(N+1) dijkstra(N-1,FG,dist1) dist2 = [INFTY]*(N+1) dijkstra(N,FG,dist2) dist3 = [INFTY]*(N+1) dijkstra(N-1,BG,dist3) dist4 = [INFTY]*(N+1) dijkstra(N,BG,dist4) for k in range(1,N-2+1): d = min(dist1[N]+dist2[k]+dist3[k],dist1[k]+dist2[N-1]+dist4[k]) if d>=INFTY: print(-1) else: print(d)