#include <iostream>
#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
void dfs(int node , vector<int> g[] , vector<int> &visited , vector<int> &parent,vector<int> &b,vector<int> &sum){
visited[node]=1;
for(auto it : g[node]){
if(visited[it]==0){
parent[it]=node;
dfs(it,g,visited,parent,b,sum);
}
}
int s=0;
for(auto it : g[node]){
if(parent[node]!=it){
s=max(s,sum[it]);
}
}
sum[node] = b[node] + s;
}
int main() {
// your code goes here
int n;
cin>>n;
vector<int> g[n+1];
vector<int> b(n+1);
for(int i=1;i<=n;i++){
cin>>b[i];
}
for(int i=1;i<=n-1;i++){
int u,v;
cin>>u>>v;
g[u].push_back(v);
g[v].push_back(u);
}
vector<int> visited(n+1,0);
vector<int> parent(n+1,-1);
vector<int> sum(n+1,0);
dfs(1,g,visited,parent,b,sum);
int answer=INT_MIN;
for(int i=1;i<=n;i++){
answer=max(answer,sum[i]);
}
cout<<answer;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdHlwZWRlZiBsb25nIGxvbmcgaW50IGxsOwoKdm9pZCBkZnMoaW50IG5vZGUgLCB2ZWN0b3I8aW50PiBnW10gLCB2ZWN0b3I8aW50PiAmdmlzaXRlZCAsIHZlY3RvcjxpbnQ+ICZwYXJlbnQsdmVjdG9yPGludD4gJmIsdmVjdG9yPGludD4gJnN1bSl7Cgl2aXNpdGVkW25vZGVdPTE7Cglmb3IoYXV0byBpdCA6IGdbbm9kZV0pewoJCQoJaWYodmlzaXRlZFtpdF09PTApewoJCXBhcmVudFtpdF09bm9kZTsKCQlkZnMoaXQsZyx2aXNpdGVkLHBhcmVudCxiLHN1bSk7Cgl9CgkJCgl9CgkKCWludCBzPTA7Cglmb3IoYXV0byBpdCA6IGdbbm9kZV0pewoJCWlmKHBhcmVudFtub2RlXSE9aXQpewoJCQlzPW1heChzLHN1bVtpdF0pOwoJCQkKCQl9Cgl9CgkKCXN1bVtub2RlXSA9IGJbbm9kZV0gKyBzOwoJCn0KCmludCBtYWluKCkgewoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJCglpbnQgbjsKCWNpbj4+bjsKCXZlY3RvcjxpbnQ+IGdbbisxXTsKCQoJCXZlY3RvcjxpbnQ+IGIobisxKTsKCWZvcihpbnQgaT0xO2k8PW47aSsrKXsKCQljaW4+PmJbaV07CgkJCgl9CgkKCQoJZm9yKGludCBpPTE7aTw9bi0xO2krKyl7CgkJaW50IHUsdjsKCQljaW4+PnU+PnY7CgkJZ1t1XS5wdXNoX2JhY2sodik7CgkJZ1t2XS5wdXNoX2JhY2sodSk7CgkJCgl9CgkKCgkKCXZlY3RvcjxpbnQ+IHZpc2l0ZWQobisxLDApOwoJdmVjdG9yPGludD4gcGFyZW50KG4rMSwtMSk7Cgl2ZWN0b3I8aW50PiBzdW0obisxLDApOwoJZGZzKDEsZyx2aXNpdGVkLHBhcmVudCxiLHN1bSk7CgkKCWludCBhbnN3ZXI9SU5UX01JTjsKCWZvcihpbnQgaT0xO2k8PW47aSsrKXsKCQlhbnN3ZXI9bWF4KGFuc3dlcixzdW1baV0pOwoJCQoJfQoJCgljb3V0PDxhbnN3ZXI7CgkKCQoJcmV0dXJuIDA7Cn0=