#include #include using namespace std; #define INF 1000000007 #define N_MAX 50 int N, M; int S[N_MAX]; int dist[N_MAX][N_MAX]; int main() { scanf("%d", &N); for (int i = 0; i < N; i++) for (int j = 0; j < N; j++) dist[i][j] = INF; for (int i = 0; i < N; i++) scanf("%d", S + i); scanf("%d", &M); for (int i = 0; i < M; i++) { int a, b, c; scanf("%d%d%d", &a, &b, &c); dist[a][b] = dist[b][a] = c; } for (int k = 0; k < N; k++) { for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j]); } } } int res = INF; for (int i = 1; i < N - 2; i++) { for (int j = i + 1; j < N - 1; j++) { int sum = S[i] + S[j]; sum += min(dist[0][i] + dist[i][j] + dist[j][N - 1], dist[0][j] + dist[j][i] + dist[i][N - 1]); res = min(res, sum); } } printf("%d\n", res); return 0; }