//Goi f[v] là tổng lớn nhất khi kết thúc tại v
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define BIT(i) (1LL << i)
const int MAXN = 2e5 + 7;
int par[MAXN][30], mx[MAXN][30], n, k, h[MAXN];
ll w[MAXN], f[MAXN];
vector <int> a[MAXN];
const ll inf = -1e18;
void dfs(ll u){
for(int i = 1; i <= 20; i++){
par[u][i] = par[par[u][i - 1]][i - 1];
mx[u][i] = max(mx[u][i - 1], mx[par[u][i - 1]][i - 1]);
}
for(auto v : a[u]){
if(v == par[u][0]) continue;
par[v][0] = u;
mx[v][0] = w[v];
h[v] = h[u] + 1;
dfs(v);
}
}
int lca(int u, int v){
int ans = 0;
if(h[u] < h[v]) swap(u, v);
int x = h[u] - h[v];
for(int i = 20; i >= 0; i--){
if(x >= BIT(i)){
ans = max(ans, mx[u][i]);
u = par[u][i];
x -= BIT(i);
}
}
if(u == v) return max(ans, mx[u][0]);
int h_max = __lg(h[u]);
for(int i = h_max; i >= 0; i--){
if(par[u][i] != par[v][i]){
ans = max({ans, mx[u][i], mx[v][i]});
u = par[u][i];
v = par[v][i];
}
}
return max({ans, mx[u][1], mx[v][1]});
}
int main(){
ios_base::sync_with_stdio(0);
cout.tie(0);
cin.tie(0);
freopen("ship.inp", "r", stdin);freopen("ship.out", "w", stdout);
cin >> n;
//Lấy trọng số đỉnh (1)
a[0].pb(1);
a[1].pb(0);
for(int i = 1; i <= n; i++) cin >> w[i];
for(int i = 1; i <= n - 1; i++){
int x, y;
cin >> x >> y;
a[x].pb(y);
a[y].pb(x);
}
dfs(0);
cin >> k;
fill(f, f + 1 + n, inf);
f[1] = 0;
while(k--){
int u, v;
cin >> u >> v;
f[v] = max(f[v], f[u] + lca(u, v));
}
cout << *max_element(f + 1, f + 1 + n);
}
Ly9Hb2kgZlt2XSBsw6AgdOG7lW5nIGzhu5tuIG5o4bqldCBraGkga+G6v3QgdGjDumMgdOG6oWkgdgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBCSVQoaSkgKDFMTCA8PCBpKQpjb25zdCBpbnQgTUFYTiA9IDJlNSArIDc7CmludCBwYXJbTUFYTl1bMzBdLCBteFtNQVhOXVszMF0sIG4sIGssIGhbTUFYTl07CmxsIHdbTUFYTl0sIGZbTUFYTl07CnZlY3RvciA8aW50PiBhW01BWE5dOwpjb25zdCBsbCBpbmYgPSAtMWUxODsKdm9pZCBkZnMobGwgdSl7CiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IDIwOyBpKyspewogICAgICAgIHBhclt1XVtpXSA9IHBhcltwYXJbdV1baSAtIDFdXVtpIC0gMV07CiAgICAgICAgbXhbdV1baV0gPSBtYXgobXhbdV1baSAtIDFdLCBteFtwYXJbdV1baSAtIDFdXVtpIC0gMV0pOwogICAgfQogICAgZm9yKGF1dG8gdiA6IGFbdV0pewogICAgICAgIGlmKHYgPT0gcGFyW3VdWzBdKSBjb250aW51ZTsKICAgICAgICBwYXJbdl1bMF0gPSB1OwogICAgICAgIG14W3ZdWzBdID0gd1t2XTsKICAgICAgICBoW3ZdID0gaFt1XSArIDE7CiAgICAgICAgZGZzKHYpOwogICAgfQp9CgoKaW50IGxjYShpbnQgdSwgaW50IHYpewogICAgaW50IGFucyA9IDA7CiAgICBpZihoW3VdIDwgaFt2XSkgc3dhcCh1LCB2KTsgCiAgICBpbnQgeCA9IGhbdV0gLSBoW3ZdOwogICAgZm9yKGludCBpID0gMjA7IGkgPj0gMDsgaS0tKXsKICAgICAgICBpZih4ID49IEJJVChpKSl7CiAgICAgICAgICAgIGFucyA9IG1heChhbnMsIG14W3VdW2ldKTsKICAgICAgICAgICAgdSA9IHBhclt1XVtpXTsKICAgICAgICAgICAgeCAtPSBCSVQoaSk7CiAgICAgICAgfQogICAgfQogICAgaWYodSA9PSB2KSByZXR1cm4gbWF4KGFucywgbXhbdV1bMF0pOwogICAgCiAgICBpbnQgaF9tYXggPSBfX2xnKGhbdV0pOwogICAgCiAgICBmb3IoaW50IGkgPSBoX21heDsgaSA+PSAwOyBpLS0pewogICAgICAgIGlmKHBhclt1XVtpXSAhPSBwYXJbdl1baV0pewogICAgICAgICAgICBhbnMgPSBtYXgoe2FucywgbXhbdV1baV0sIG14W3ZdW2ldfSk7CiAgICAgICAgICAgIHUgPSBwYXJbdV1baV07CiAgICAgICAgICAgIHYgPSBwYXJbdl1baV07CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIG1heCh7YW5zLCBteFt1XVsxXSwgbXhbdl1bMV19KTsKfQoKCmludCBtYWluKCl7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY291dC50aWUoMCk7CiAgICBjaW4udGllKDApOwogICAgZnJlb3Blbigic2hpcC5pbnAiLCAiciIsIHN0ZGluKTtmcmVvcGVuKCJzaGlwLm91dCIsICJ3Iiwgc3Rkb3V0KTsKICAgIGNpbiA+PiBuOwogICAgCiAgICAvL0zhuqV5IHRy4buNbmcgc+G7kSDEkeG7iW5oICgxKQogICAgYVswXS5wYigxKTsKICAgIGFbMV0ucGIoMCk7CiAgICAKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSBjaW4gPj4gd1tpXTsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbiAtIDE7IGkrKyl7CiAgICAgICAgaW50IHgsIHk7CiAgICAgICAgY2luID4+IHggPj4geTsKICAgICAgICBhW3hdLnBiKHkpOwogICAgICAgIGFbeV0ucGIoeCk7CiAgICB9CiAgICBkZnMoMCk7CiAgICAKICAgIGNpbiA+PiBrOwogICAgZmlsbChmLCBmICsgMSArIG4sIGluZik7CiAgICBmWzFdID0gMDsKICAgIHdoaWxlKGstLSl7CiAgICAgICAgaW50IHUsIHY7CiAgICAgICAgY2luID4+IHUgPj4gdjsKICAgICAgICBmW3ZdID0gbWF4KGZbdl0sIGZbdV0gKyBsY2EodSwgdikpOwogICAgfQogICAgY291dCA8PCAqbWF4X2VsZW1lbnQoZiArIDEsIGYgKyAxICsgbik7CiAgICAKfQo=