#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define ll long long #define ld long double #define EPS 0.0000000001 #define INF 1e9 #define LINF (ll)INF*INF #define MOD 1000000007 #define rep(i,n) for(int i=0;i<(n);i++) #define loop(i,a,n) for(int i=a;i<(n);i++) #define all(in) in.begin(),in.end() #define shosu(x) fixed< vi; typedef vector vs; typedef pair pii; typedef vector vp; int gcd(int a, int b){ if(b==0) return a; return gcd(b,a%b); } int lcm(int a, int b){ return a/gcd(a,b)*b; } signed main(void) { int n; cin >> n; vi s(n); rep(i,n)cin >> s[i]; int m; cin >> m; int v[55][55]; rep(i,n)rep(j,n)v[i][j] = INF; rep(i,m){ int a,b,c; cin >> a >> b >> c; v[a][b] = v[b][a] = c; } rep(k,n)rep(i,n)rep(j,n){ v[i][j] = min(v[i][j],v[i][k]+v[k][j]); } int ans = INF; loop(i,1,n-1)loop(j,1,n-1)if(i != j){ int t = v[0][i]+v[i][j]+v[j][n-1]+s[i]+s[j]; //cout << i << " " << j << " " << t << endl; ans = min(ans, t); } cout << ans << endl; }