#def solve(): import sys input = sys.stdin.readline INF = 10**15 # 地点数 N = int(input()) # 滞在コスト stay = [int(input()) for _ in range(N)] # 移動数 M = int(input()) # 距離行列 dist = [[INF] * N for _ in range(N)] for i in range(N): dist[i][i] = 0 # 無向グラフ for _ in range(M): a, b, c = map(int, input().split()) dist[a][b] = min(dist[a][b], c) dist[b][a] = min(dist[b][a], c) # ワーシャルフロイド for k in range(N): for i in range(N): if dist[i][k] == INF: continue for j in range(N): if dist[k][j] == INF: continue if dist[i][j] > dist[i][k] + dist[k][j]: dist[i][j] = dist[i][k] + dist[k][j] ans = INF # 滞在地点A,Bを全探索(0とN-1を除外) for A in range(1, N - 1): for B in range(1, N - 1): if A == B: continue if dist[0][A] == INF: continue if dist[A][B] == INF: continue if dist[B][N - 1] == INF: continue cost = ( dist[0][A] + stay[A] + dist[A][B] + stay[B] + dist[B][N - 1] ) ans = min(ans, cost) print(ans)