#include #include #include #include #define _USE_MATH_DEFINES #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define li long long int #define rep(i,to) for(li i=0;i<((li)(to));i++) #define repp(i,start,to) for(li i=(li)(start);i<((li)(to));i++) #define pb push_back #define sz(v) ((li)(v).size()) #define bgn(v) ((v).begin()) #define eend(v) ((v).end()) #define allof(v) (v).begin(), (v).end() #define dodp(v,n) memset(v,(li)n,sizeof(v)) #define bit(n) (1ll<<(li)(n)) #define mp(a,b) make_pair(a,b) #define rin rep(i,n) #define EPS 1e-10 #define ETOL 1e-8 #define MOD 1000003 #define INF 10000000000000000 #define F first #define S second #define endl "\n" #define pp(X) cout< edge[55]; li wf[55][55]; int main(){ ios::sync_with_stdio(false); li n; cin>>n; rep(i,n)cin>>s[i]; rep(i,n)rep(j,n)wf[i][j]=INF; li m; cin>>m; rep(i,m){ li a,b,c; cin>>a>>b>>c; wf[a][b]=wf[b][a]=c; } rep(k,n){ rep(i,n){ rep(j,n){ wf[i][j]=min(wf[i][j], wf[i][k]+wf[k][j]); } } } li res=INF; repp(i,1,n-1){ repp(j,1,n-1){ if(i!=j)res=min(res, wf[0][i]+wf[i][j]+wf[j][n-1]+s[i]+s[j]); } } cout<