#include #include #include #include #include #include #include #include using namespace std; using ll = long long; using ull = unsigned long long; const ull INF = 1e10; using P = pair; int main() { int n; cin >> n; vector S(n); for(auto&& x : S) cin >> x; int m; cin >> m; vector> d(n,vector(n,INF)); for(int i = 0; i < m; ++i) { int a,b,c; cin >> a >> b >> c; d.at(a).at(b) = c; d.at(b).at(a) = c; } for(int k = 0; k < n; ++k) for(int i = 0; i < n; ++i) for(int j = 0; j < n; ++j) d[i][j] = min(d[i][j], d[i][k] + d[k][j]); ull minimum = INF; for(int i = 1; i < n-1; ++i) for(int j = 1; j < n-1; ++j) { if(i == j) continue; minimum = min(minimum,d[0][i] + d[i][j] + d[j][n-1] + S[i] + S[j]); } cout << minimum << endl; }