#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=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=0;
for(int i=1;i<=n;i++){
answer=max(answer,sum[i]);
}
cout<<answer;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdHlwZWRlZiBsb25nIGxvbmcgaW50IGxsOwoKdm9pZCBkZnMoaW50IG5vZGUgLCB2ZWN0b3I8aW50PiBnW10gLCB2ZWN0b3I8aW50PiAmdmlzaXRlZCAsIHZlY3RvcjxpbnQ+ICZwYXJlbnQsdmVjdG9yPGludD4gJmIsdmVjdG9yPGludD4gJnN1bSl7Cgl2aXNpdGVkW25vZGVdPTE7Cglmb3IoYXV0byBpdCA6IGdbbm9kZV0pewoJCQoJaWYodmlzaXRlZFtpdF09PTApewoJCXBhcmVudFtpdF09bm9kZTsKCQlkZnMoaXQsZyx2aXNpdGVkLHBhcmVudCxiLHN1bSk7Cgl9CgkJCgl9CgkKCWludCBzPTA7Cglmb3IoYXV0byBpdCA6IGdbbm9kZV0pewoJCWlmKHBhcmVudFtub2RlXSE9aXQpewoJCQlzPXMrc3VtW2l0XTsKCQkJCgkJfQoJfQoJCglzdW1bbm9kZV0gPSBiW25vZGVdICsgczsKCQp9CgppbnQgbWFpbigpIHsKCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCQoJaW50IG47CgljaW4+Pm47Cgl2ZWN0b3I8aW50PiBnW24rMV07CgkKCQl2ZWN0b3I8aW50PiBiKG4rMSk7Cglmb3IoaW50IGk9MTtpPD1uO2krKyl7CgkJY2luPj5iW2ldOwoJCQoJfQoJCgkKCWZvcihpbnQgaT0xO2k8PW4tMTtpKyspewoJCWludCB1LHY7CgkJY2luPj51Pj52OwoJCWdbdV0ucHVzaF9iYWNrKHYpOwoJCWdbdl0ucHVzaF9iYWNrKHUpOwoJCQoJfQoJCgoJCgl2ZWN0b3I8aW50PiB2aXNpdGVkKG4rMSwwKTsKCXZlY3RvcjxpbnQ+IHBhcmVudChuKzEsLTEpOwoJdmVjdG9yPGludD4gc3VtKG4rMSwwKTsKCWRmcygxLGcsdmlzaXRlZCxwYXJlbnQsYixzdW0pOwoJCglpbnQgYW5zd2VyPTA7Cglmb3IoaW50IGk9MTtpPD1uO2krKyl7CgkJYW5zd2VyPW1heChhbnN3ZXIsc3VtW2ldKTsKCQkKCX0KCQoJY291dDw8YW5zd2VyOwoJCgkKCXJldHVybiAwOwp9