#! /usr/bin/env python3
import sys



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, verts[i], [i]]]
    while front:
        x, w, used = front.pop(0)
        for j in range(0, len(edgs[x]), 2):
            if edgs[x][j] in used or w + edgs[x][j + 1] > mini:
                continue
            w2 = w + edgs[x][j + 1]
            if w2 + verts[edgs[x][j]] < mini:
                mini = w2 + verts[edgs[x][j]]
            front += [[edgs[x][j], w2, used + [edgs[x][j]]]]
print(mini)



