#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll, ll> pll;
const int N = 16000+5,M =1e4+5,mod = 7;
ll n, sum[N], a[N];
vector<ll> E[N];
ll dfs(ll zi,ll fa) {
for (ll to:E[zi]) {
if(to == fa)
continue;
dfs(to, zi);
sum[zi] += (sum[to]>0?sum[to]:0);
}
sum[zi] += a[zi];
}
int main()
{
cin >> n;
for (ll i = 1; i <= n;i++) {
cin >> a[i];
}
for (ll i = 1; i <= n - 1;i++) {
ll fr, to;
cin >> fr >> to;
E[fr].push_back(to);
E[to].push_back(fr);
}
dfs(1, 0);
ll ans = LONG_LONG_MIN;
for (ll i = 1; i <= n;i++) {
ans = max(ans, sum[i]);
}
cout << ans << endl;
return 0;
}