#include using namespace std; template T gcd(T x, T y) { if (y == 0) return x; return gcd(y, x % y); } template T lcm(T x, T y) { if (x == 0 || y == 0) return 0; return x / gcd(x, y) * y; } int main() { int N; cin >> N; vector S(N); for (int i = 0; i < N; i++) cin >> S[i]; int M; cin >> M; vector> vv(N, vector(N, 100000)); for (int i = 0; i < M; i++) { int A, B, C; cin >> A >> B >> C; vv[A][B] = vv[B][A] = C; } for (int i = 0; i < N; i++) vv[i][i] = 0; for (int k = 0; k < N; k++) for (int i = 0; i < N; i++) for (int j = 0; j < N; j++) if (vv[i][j] > vv[i][k] + vv[k][j]) vv[i][j] = vv[i][k] + vv[k][j]; int ans = INT_MAX; for (int i = 1; i < N - 1; i++) { for (int j = 1; j < N - 1; j++) { if (i == j) continue; ans = min(ans, vv[0][i] + vv[i][j] + vv[j][N - 1] + S[i] + S[j]); } } cout << ans << endl; }