#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 1000005;
int n;
ll w[N], sub[N];
vector<int> g[N];
ll ans = 0;
void dfs1(int u, int p) {
sub[u] = w[u];
for (int v : g[u]) if (v != p) {
dfs1(v,u);
sub[u] += sub[v];
}
}
void dfs2(int u, int p) {
ll best1=0, best2=0; int id1=-1;
for (int v : g[u]) if (v != p) {
if (sub[v] > best1) {best2=best1; best1=sub[v]; id1=v;}
else if (sub[v] > best2) best2=sub[v];
}
ans = max(ans, sub[u]);
for (int v : g[u]) if (v != p) {
ll oldu=sub[u], oldv=sub[v];
if (v==id1) {
sub[u]=w[u]+best2;
}
sub[v]+=sub[u];
dfs2(v,u);
sub[u]=oldu; sub[v]=oldv;
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin>>n;
for(int i=1;i<=n;i++) cin>>w[i];
for(int i=1;i<n;i++) {
int u,v;cin>>u>>v;
g[u].push_back(v);
g[v].push_back(u);
}
dfs1(1,-1);
dfs2(1,-1);
cout<<ans<<"\n";
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIGxsID0gbG9uZyBsb25nOwoKY29uc3QgaW50IE4gPSAxMDAwMDA1OwppbnQgbjsKbGwgd1tOXSwgc3ViW05dOwp2ZWN0b3I8aW50PiBnW05dOwpsbCBhbnMgPSAwOwoKdm9pZCBkZnMxKGludCB1LCBpbnQgcCkgewogICAgc3ViW3VdID0gd1t1XTsKICAgIGZvciAoaW50IHYgOiBnW3VdKSBpZiAodiAhPSBwKSB7CiAgICAgICAgZGZzMSh2LHUpOwogICAgICAgIHN1Ylt1XSArPSBzdWJbdl07CiAgICB9Cn0KCnZvaWQgZGZzMihpbnQgdSwgaW50IHApIHsKICAgIGxsIGJlc3QxPTAsIGJlc3QyPTA7IGludCBpZDE9LTE7CiAgICBmb3IgKGludCB2IDogZ1t1XSkgaWYgKHYgIT0gcCkgewogICAgICAgIGlmIChzdWJbdl0gPiBiZXN0MSkge2Jlc3QyPWJlc3QxOyBiZXN0MT1zdWJbdl07IGlkMT12O30KICAgICAgICBlbHNlIGlmIChzdWJbdl0gPiBiZXN0MikgYmVzdDI9c3ViW3ZdOwogICAgfQogICAgYW5zID0gbWF4KGFucywgc3ViW3VdKTsKICAgIGZvciAoaW50IHYgOiBnW3VdKSBpZiAodiAhPSBwKSB7CiAgICAgICAgbGwgb2xkdT1zdWJbdV0sIG9sZHY9c3ViW3ZdOwogICAgICAgIGlmICh2PT1pZDEpIHsKICAgICAgICAgICAgc3ViW3VdPXdbdV0rYmVzdDI7CiAgICAgICAgfQogICAgICAgIHN1Ylt2XSs9c3ViW3VdOwogICAgICAgIGRmczIodix1KTsKICAgICAgICBzdWJbdV09b2xkdTsgc3ViW3ZdPW9sZHY7CiAgICB9Cn0KCmludCBtYWluKCkgewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKTsKICAgIGNpbj4+bjsKICAgIGZvcihpbnQgaT0xO2k8PW47aSsrKSBjaW4+PndbaV07CiAgICBmb3IoaW50IGk9MTtpPG47aSsrKSB7CiAgICAgICAgaW50IHUsdjtjaW4+PnU+PnY7CiAgICAgICAgZ1t1XS5wdXNoX2JhY2sodik7CiAgICAgICAgZ1t2XS5wdXNoX2JhY2sodSk7CiAgICB9CiAgICBkZnMxKDEsLTEpOwogICAgZGZzMigxLC0xKTsKICAgIGNvdXQ8PGFuczw8IlxuIjsKfQo=