#include<bits/stdc++.h>
using namespace std;
const long long MaxN = 1e5 + 5;
long long n,ans, a[MaxN], dp[MaxN];
vector<long long> vt[MaxN];
void dfs(long long u, long long par)
{
dp[u]=a[u];
long long mx1=LLONG_MIN;
long long mx2=LLONG_MIN;
for (long long v : vt[u])
{
if(v==par) continue;
dfs(v,u);
if(dp[v]>mx1)
{
mx2=mx1;
mx1=dp[v];
}
else if(dp[v]>mx2)
{
mx2=dp[v];
}
}
dp[u]+=max(0LL,mx1);
long long cur=a[u]+max(0LL,mx1)+max(0LL,mx2);
ans=max(ans,cur);
}
void input()
{
cin >> n;
for (long long i=1; i<=n; i++)
{
cin >> a[i];
}
for (long long i=1; i<n; i++)
{
long long u,v;
cin >> u >> v;
vt[u].push_back(v);
vt[v].push_back(u);
}
}
void solve()
{
ans=LLONG_MIN;
dfs(1,-1);
cout << ans << "\n";
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
input();
solve();
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGxvbmcgbG9uZyBNYXhOID0gMWU1ICsgNTsKCmxvbmcgbG9uZyBuLGFucywgYVtNYXhOXSwgZHBbTWF4Tl07CnZlY3Rvcjxsb25nIGxvbmc+IHZ0W01heE5dOwoKdm9pZCBkZnMobG9uZyBsb25nIHUsIGxvbmcgbG9uZyBwYXIpCnsKICAgIGRwW3VdPWFbdV07CgogICAgbG9uZyBsb25nIG14MT1MTE9OR19NSU47CiAgICBsb25nIGxvbmcgbXgyPUxMT05HX01JTjsKCiAgICBmb3IgKGxvbmcgbG9uZyB2IDogdnRbdV0pCiAgICB7CiAgICAgICAgaWYodj09cGFyKSBjb250aW51ZTsKCiAgICAgICAgZGZzKHYsdSk7CgogICAgICAgIGlmKGRwW3ZdPm14MSkKICAgICAgICB7CiAgICAgICAgICAgIG14Mj1teDE7CiAgICAgICAgICAgIG14MT1kcFt2XTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZihkcFt2XT5teDIpCiAgICAgICAgewogICAgICAgICAgICBteDI9ZHBbdl07CiAgICAgICAgfQogICAgfQoKICAgIGRwW3VdKz1tYXgoMExMLG14MSk7CgogICAgbG9uZyBsb25nIGN1cj1hW3VdK21heCgwTEwsbXgxKSttYXgoMExMLG14Mik7CgogICAgYW5zPW1heChhbnMsY3VyKTsKfQoKdm9pZCBpbnB1dCgpCnsKICAgIGNpbiA+PiBuOwoKICAgIGZvciAobG9uZyBsb25nIGk9MTsgaTw9bjsgaSsrKQogICAgewogICAgICAgIGNpbiA+PiBhW2ldOwogICAgfQoKICAgIGZvciAobG9uZyBsb25nIGk9MTsgaTxuOyBpKyspCiAgICB7CiAgICAgICAgbG9uZyBsb25nIHUsdjsKICAgICAgICBjaW4gPj4gdSA+PiB2OwoKICAgICAgICB2dFt1XS5wdXNoX2JhY2sodik7CiAgICAgICAgdnRbdl0ucHVzaF9iYWNrKHUpOwogICAgfQp9Cgp2b2lkIHNvbHZlKCkKewogICAgYW5zPUxMT05HX01JTjsKCiAgICBkZnMoMSwtMSk7CgogICAgY291dCA8PCBhbnMgPDwgIlxuIjsKfQoKaW50IG1haW4oKQp7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsKCiAgICBpbnB1dCgpOwogICAgc29sdmUoKTsKfQ==