import heapq n,m=map(int,input().split()) g=[[] for _ in range(n)] for _ in range(m): a,b,c=map(int,input().split()) g[a-1].append((b-1,c)) g[b-1].append((a-1,c)) t=list(map(int,input().split())) time=[float('inf')]*n confirmed=[False]*n q=[] heapq.heappush(q,(0,0,0)) while q: now_time,now_eat,now_place=heapq.heappop(q) if confirmed[now_place]: continue confirmed[now_place]=True time[now_place]=now_time now_time+=t[now_place] now_eat+=t[now_place] for to_place,to_dst in g[now_place]: to_time=now_time+to_dst//now_eat if time[to_place]<=to_time: continue heapq.heappush(q,(to_time,now_eat,to_place)) print(time[-1])