#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
ll sum[1000];
int b[1000];
void DFS(int node, vector<int> G[], int used[], int parent[]) {
used[node] = 1;
for (auto u : G[node]) {
if (used[u] == 0) {
parent[u] = node;
DFS(u, G, used, parent);
}
}
// Bottom-up traversal
ll s = 0;
for (auto c : G[node]) {
if (c == parent[node]) {
// Ignore the parent node
continue;
} else {
s += sum[c];
}
}
sum[node] = b[node] + s;
}
int main() {
int n;
cin >> n;
vector<int> g[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);
}
int used[n + 1] = {0};
int parent[n + 1] = {0};
DFS(1, g, used, parent);
ll s = INT_MIN;
for (int i = 1; i <= n; i++) {
s = max(s, sum[i]);
}
cout << s;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGludCBsbDsgCmxsIHN1bVsxMDAwXTsKaW50IGJbMTAwMF07Cgp2b2lkIERGUyhpbnQgbm9kZSwgdmVjdG9yPGludD4gR1tdLCBpbnQgdXNlZFtdLCBpbnQgcGFyZW50W10pIHsKICAgIHVzZWRbbm9kZV0gPSAxOwogICAgZm9yIChhdXRvIHUgOiBHW25vZGVdKSB7CiAgICAgICAgaWYgKHVzZWRbdV0gPT0gMCkgewogICAgICAgICAgICBwYXJlbnRbdV0gPSBub2RlOwogICAgICAgICAgICBERlModSwgRywgdXNlZCwgcGFyZW50KTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIC8vIEJvdHRvbS11cCB0cmF2ZXJzYWwKICAgIGxsIHMgPSAwOwogICAgZm9yIChhdXRvIGMgOiBHW25vZGVdKSB7CiAgICAgICAgaWYgKGMgPT0gcGFyZW50W25vZGVdKSB7CiAgICAgICAgICAgIC8vIElnbm9yZSB0aGUgcGFyZW50IG5vZGUKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcyArPSBzdW1bY107CiAgICAgICAgfQogICAgfQogICAgc3VtW25vZGVdID0gYltub2RlXSArIHM7IAp9CgppbnQgbWFpbigpIHsKICAgIGludCBuOwogICAgY2luID4+IG47CiAgICB2ZWN0b3I8aW50PiBnW24gKyAxXTsgCiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICBjaW4gPj4gYltpXTsgCiAgICB9CiAgICAKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG4gLSAxOyBpKyspIHsKICAgICAgICBpbnQgdSwgdjsKICAgICAgICBjaW4gPj4gdSA+PiB2OyAKICAgICAgICBnW3VdLnB1c2hfYmFjayh2KTsKICAgICAgICBnW3ZdLnB1c2hfYmFjayh1KTsgCiAgICB9CiAgICAKICAgIGludCB1c2VkW24gKyAxXSA9IHswfTsKICAgIGludCBwYXJlbnRbbiArIDFdID0gezB9OwogICAgREZTKDEsIGcsIHVzZWQsIHBhcmVudCk7CiAgICAKICAgIGxsIHMgPSBJTlRfTUlOOyAKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIHMgPSBtYXgocywgc3VtW2ldKTsKICAgIH0KICAgIAogICAgY291dCA8PCBzOyAKICAgIHJldHVybiAwOwp9Cg==