#import pdb; pdb.set_trace() def main(): n = int(raw_input()) s = [] for i in range(n): s.append(int(raw_input())) m = int(raw_input()) dq = [[float("inf") for i in range(n)] for j in range(n)] for i in range(m): (a,b,c) = map(int, raw_input().split()) dq[a][b] = c dq[b][a] = c for i in range(n): for j in range(n): for k in range(n): if dq[i][j] > dq[j][k] + dq[i][k]: dq[i][j] = dq[j][k] + dq[i][k] minimum = float("inf") for i in xrange(1, n - 1): for j in xrange(i + 1, n - 1): a1 = dq[0][i] + dq[i][j] + dq[j][n - 1] + s[i] + s[j] a2 = dq[0][j] + dq[j][i] + dq[i][n - 1] + s[i] + s[j] minimum = min(minimum, a1, a2) print minimum if __name__ == '__main__': main()