#include #include #include #define repi(i,a,b) for(int i=(a);i<(b);++i) #define rep(i,a) repi(i,0,a) const int MAX_N = 50, INF = std::numeric_limits::max()>>2; int N, M; int S[MAX_N], d[MAX_N][MAX_N]; int main() { scanf( "%d", &N ); rep( i, N ) scanf( "%d", S+i ); rep( i, N ) rep( j, N ) d[i][j] = i==j?0:INF; scanf( "%d", &M ); rep( i, M ) { int A, B, C; scanf( "%d%d%d", &A, &B, &C ); d[A][B] = d[B][A] = C; } rep( k, N ) rep( i, N ) rep( j, N ) d[i][j] = std::min( d[i][j], d[i][k]+d[k][j] ); int ans = INF; repi( i, 1, N-1 ) repi( j, 1, N-1 ) if( i != j ) ans = std::min( ans, d[0][i]+S[i]+d[i][j]+S[j]+d[j][N-1] ); printf( "%d\n", ans ); return 0; }