#! /usr/bin/env python3
import sys
import time


N, M = map(int, input().split())
verts = list(map(int, input().split()))
edgs = [[] for i in range(N)]
for i in range(M):
    v0, v1, w = map(int, sys.stdin.readline().rstrip("\n").split())
    edgs[v0] += [v1, w]
    edgs[v1] += [v0, w]

mini = 10 ** 6 * 3 + 100
for i in range(N):
    if verts[i] > mini:
        continue
    front = [i]
    paths = [verts[i]]
    ind = 0
    while ind < len(front):
        x = front[ind]
        w = paths[ind]
        max = len(edgs[x])
        for j in range(0, max, 2):
            w2 = w + edgs[x][j + 1]
            if (edgs[x][j] in front and paths[front.index(edgs[x][j])] < w2) or w2 > mini:
                continue

            if w2 + verts[edgs[x][j]] < mini:
                mini = w2 + verts[edgs[x][j]]
            front += [edgs[x][j]]
            paths += [w2]
        ind += 1
print(mini)



