#include <bits/stdc++.h>
#define ll long long
#define pii pair<ll, ll>
#define st first
#define nd second
#define file "test"
using namespace std;
const long long INF = 1e18;
const long long N = 1e6 + 5;
ll n, w[N], dp[N], dp2[N], f[N], f2[N], g[N], ans = 0;
vector <int> d[N];
void dfs1(int p, int u) {
dp[u] = f[u] = w[u];
vector <ll> save;
for (int v: d[u]) if (v ^ p) {
dfs1(u, v);
dp[u] = max(dp[u], dp[v] + w[u]);
save.push_back(dp[v]);
}
sort(save.begin(), save.end(), greater <ll> ());
if (save.size() > 0) f[u] += save[0];
if (save.size() > 1) f[u] += save[1];
for (int v: d[u]) if (v ^ p) f[u] = max(f[u], f[v]);
}
void dfs2(int p, int u) {
ans = max(ans, f[u]);
vector <pii> save, ff;
for (int v: d[u]) if (v != p) {
save.push_back({dp[v], v});
ff.push_back({f[v], v});
}
ff.push_back({f2[p], p});
save.push_back({dp2[p], p});
sort(save.begin(), save.end(), greater <pii> ());
sort(ff.begin(), ff.end(), greater <pii> ());
ll sum = 0;
for (int i = 0; i < min(3, (int)save.size()); i ++)
sum += save[i].st;
for (int v: d[u]) if (v != p) {
ll cur = sum + w[u]; bool ok = false;
for (int i = 0; i < 3; i ++)
if (save.size() > i && v == save[i].nd) {
cur -= save[i].st;
ok = true;
}
if (!ok && save.size() > 2) cur -= save[2].st;
if (ff[0].nd == v && ff.size() > 1) cur = max(cur, ff[1].st);
if (ff[0].nd != v) cur = max(cur, ff[0].st);
f2[u] = cur;
ans = max(ans, cur + f[v]);
dp2[u] = dp2[p] + w[u];
if (v == save[0].nd && save.size() > 1) dp2[u] = max(dp2[u], save[1].st + w[u]);
if (v != save[0].nd) dp2[u] = max(dp2[u], save[0].st + w[u]);
dfs2(u, v);
}
}
int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
// #ifndef ONLINE_JUDGE
freopen(file".inp", "r", stdin); freopen(file".out", "w", stdout);
// #endif
cin >> n;
for (int i = 1; i <= n; i ++) cin >> w[i];
for (int i = 1, u, v; i < n; i ++) {
cin >> u >> v;
d[u].push_back(v);
d[v].push_back(u);
}
dfs1(0, 1);
dfs2(0, 1);
cout << ans;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgcGlpIHBhaXI8bGwsIGxsPgojZGVmaW5lIHN0IGZpcnN0CiNkZWZpbmUgbmQgc2Vjb25kCiNkZWZpbmUgZmlsZSAidGVzdCIKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKY29uc3QgbG9uZyBsb25nIElORiA9IDFlMTg7CmNvbnN0IGxvbmcgbG9uZyBOID0gMWU2ICsgNTsKCmxsIG4sIHdbTl0sIGRwW05dLCBkcDJbTl0sIGZbTl0sIGYyW05dLCBnW05dLCBhbnMgPSAwOwp2ZWN0b3IgPGludD4gZFtOXTsKCnZvaWQgZGZzMShpbnQgcCwgaW50IHUpIHsKICAgIGRwW3VdID0gZlt1XSA9IHdbdV07CiAgICB2ZWN0b3IgPGxsPiBzYXZlOwogICAgZm9yIChpbnQgdjogZFt1XSkgaWYgKHYgXiBwKSB7CiAgICAgICAgZGZzMSh1LCB2KTsgCiAgICAgICAgZHBbdV0gPSBtYXgoZHBbdV0sIGRwW3ZdICsgd1t1XSk7CiAgICAgICAgc2F2ZS5wdXNoX2JhY2soZHBbdl0pOwogICAgfSAgCgogICAgc29ydChzYXZlLmJlZ2luKCksIHNhdmUuZW5kKCksIGdyZWF0ZXIgPGxsPiAoKSk7CiAgICBpZiAoc2F2ZS5zaXplKCkgPiAwKSBmW3VdICs9IHNhdmVbMF07CiAgICBpZiAoc2F2ZS5zaXplKCkgPiAxKSBmW3VdICs9IHNhdmVbMV07CgogICAgZm9yIChpbnQgdjogZFt1XSkgaWYgKHYgXiBwKSBmW3VdID0gbWF4KGZbdV0sIGZbdl0pOwp9Cgp2b2lkIGRmczIoaW50IHAsIGludCB1KSB7CgogICAgYW5zID0gbWF4KGFucywgZlt1XSk7CgogICAgdmVjdG9yIDxwaWk+IHNhdmUsIGZmOwoKICAgIGZvciAoaW50IHY6IGRbdV0pIGlmICh2ICE9IHApIHsKICAgICAgICBzYXZlLnB1c2hfYmFjayh7ZHBbdl0sIHZ9KTsKICAgICAgICBmZi5wdXNoX2JhY2soe2Zbdl0sIHZ9KTsKICAgIH0KCiAgICBmZi5wdXNoX2JhY2soe2YyW3BdLCBwfSk7CiAgICBzYXZlLnB1c2hfYmFjayh7ZHAyW3BdLCBwfSk7CgogICAgc29ydChzYXZlLmJlZ2luKCksIHNhdmUuZW5kKCksIGdyZWF0ZXIgPHBpaT4gKCkpOwogICAgc29ydChmZi5iZWdpbigpLCBmZi5lbmQoKSwgZ3JlYXRlciA8cGlpPiAoKSk7CiAgICBsbCBzdW0gPSAwOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtaW4oMywgKGludClzYXZlLnNpemUoKSk7IGkgKyspCiAgICAgICAgc3VtICs9IHNhdmVbaV0uc3Q7CgogICAgZm9yIChpbnQgdjogZFt1XSkgaWYgKHYgIT0gcCkgewogICAgICAgIGxsIGN1ciA9IHN1bSArIHdbdV07IGJvb2wgb2sgPSBmYWxzZTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7IGkgKyspCiAgICAgICAgICAgIGlmIChzYXZlLnNpemUoKSA+IGkgJiYgdiA9PSBzYXZlW2ldLm5kKSB7CiAgICAgICAgICAgICAgICBjdXIgLT0gc2F2ZVtpXS5zdDsKICAgICAgICAgICAgICAgIG9rID0gdHJ1ZTsKICAgICAgICAgICAgfSAgIAoKICAgICAgICBpZiAoIW9rICYmIHNhdmUuc2l6ZSgpID4gMikgY3VyIC09IHNhdmVbMl0uc3Q7CgogICAgICAgIGlmIChmZlswXS5uZCA9PSB2ICYmIGZmLnNpemUoKSA+IDEpIGN1ciA9IG1heChjdXIsIGZmWzFdLnN0KTsKICAgICAgICBpZiAoZmZbMF0ubmQgIT0gdikgY3VyID0gbWF4KGN1ciwgZmZbMF0uc3QpOwoKICAgICAgICBmMlt1XSA9IGN1cjsKICAgICAgICAKICAgICAgICBhbnMgPSBtYXgoYW5zLCBjdXIgKyBmW3ZdKTsgCgogICAgICAgIGRwMlt1XSA9IGRwMltwXSArIHdbdV07CiAgICAgICAgaWYgKHYgPT0gc2F2ZVswXS5uZCAmJiBzYXZlLnNpemUoKSA+IDEpIGRwMlt1XSA9IG1heChkcDJbdV0sIHNhdmVbMV0uc3QgKyB3W3VdKTsKICAgICAgICBpZiAodiAhPSBzYXZlWzBdLm5kKSBkcDJbdV0gPSBtYXgoZHAyW3VdLCBzYXZlWzBdLnN0ICsgd1t1XSk7CiAgICAgICAgZGZzMih1LCB2KTsgCiAgICB9Cgp9CgppbnQgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7IGNvdXQudGllKDApOwogICAgLy8gI2lmbmRlZiBPTkxJTkVfSlVER0UKICAgICAgICBmcmVvcGVuKGZpbGUiLmlucCIsICJyIiwgc3RkaW4pOyBmcmVvcGVuKGZpbGUiLm91dCIsICJ3Iiwgc3Rkb3V0KTsKICAgIC8vICNlbmRpZgogICAgCiAgICBjaW4gPj4gbjsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkgKyspIGNpbiA+PiB3W2ldOwogICAgZm9yIChpbnQgaSA9IDEsIHUsIHY7IGkgPCBuOyBpICsrKSB7CiAgICAgICAgY2luID4+IHUgPj4gdjsKICAgICAgICBkW3VdLnB1c2hfYmFjayh2KTsKICAgICAgICBkW3ZdLnB1c2hfYmFjayh1KTsKICAgIH0KCiAgICBkZnMxKDAsIDEpOwogICAgZGZzMigwLCAxKTsKCiAgICBjb3V0IDw8IGFuczsKCiAgICByZXR1cm4gMDsKfSAgICA=