# Input N = int(input()) S = [ int(input()) for i in range(N) ] M = int(input()) d = [ [ 10 ** 10 ] * N for i in range(N) ] for i in range(M): A, B, C = map(int, input().split()) d[A][B] = min(d[A][B], C) d[B][A] = min(d[B][A], C) # Warshall-Floyd for i in range(N): d[i][i] = 0 for i in range(N): for j in range(N): for k in range(N): d[j][k] = min(d[j][k], d[j][i] + d[i][k]) # Brute Force answer = 10 ** 10 for i in range(1, N - 1): for j in range(1, N - 1): if i != j: answer = min(answer, d[0][i] + d[i][j] + d[j][N - 1] + S[i] + S[j]) # Output print(answer)