"""
https://www.lanqiao.cn/problems/2194/learning/?page=1&first_category_id=1&problem_id=2194
"""
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
# 1~n个城市需要隔离的时间
c = [0] + list(map(int, input().split()))
# 使用普通列表存图
e = []
INF = 1e9
# d[i]表示到达i城市耗费的最短时间
d = [INF] * (n + 1)
d[1] = 0
for i in range(m):
u, v, w = map(int, input().split())
e.append([u, v, w])
e.append([v, u, w])
# Bellman-Ford算法
# 对所有边进行n - 1轮松弛
for _ in range(n - 1):
for u, v, w in e:
# 从u到v, 长度为w
# 到城市v需要隔离c[v]天
if v != n:
res = c[v]
else:
res = 0
if d[v] > d[u] + w + res:
d[v] = d[u] + w + res
print(d[n])
Bellman-Ford算法: 存在负权边时的单源最短路算法, 如果存在负权环的话无法求解出答案