import java.util.*;
public class Main {
static long[] sum;
static int[] b;
public static void DFS(int node, int parent, List<Integer>[] G) {
long bestChild = 0;
for (int child : G[node]) {
if (child == parent) {
continue;
}
DFS(child, node, G);
bestChild
= Math.
max(bestChild, sum
[child
]); }
sum[node] = b[node] + bestChild;
}
public static void main
(String[] args
) { Scanner scanner
= new Scanner
(System.
in);
int n = scanner.nextInt();
b = new int[n + 1];
sum = new long[n + 1];
for (int i = 1; i <= n; i++) {
b[i] = scanner.nextInt();
}
List
<Integer
>[] G
= new List[n
+ 1];
for (int i = 0; i <= n; i++) {
G[i] = new ArrayList<>();
}
for (int i = 1; i <= n - 1; i++) {
int u = scanner.nextInt();
int v = scanner.nextInt();
G[u].add(v);
G[v].add(u);
}
DFS(1, 0, G);
long answer
= Long.
MIN_VALUE;
for (int i = 1; i <= n; i++) {
answer
= Math.
max(answer, sum
[i
]); }
}
}
aW1wb3J0IGphdmEudXRpbC4qOwoKcHVibGljIGNsYXNzIE1haW4gewogICAgc3RhdGljIGxvbmdbXSBzdW07CiAgICBzdGF0aWMgaW50W10gYjsKCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgREZTKGludCBub2RlLCBpbnQgcGFyZW50LCBMaXN0PEludGVnZXI+W10gRykgewoKICAgICAgICBsb25nIGJlc3RDaGlsZCA9IDA7CgogICAgICAgIGZvciAoaW50IGNoaWxkIDogR1tub2RlXSkgewoKICAgICAgICAgICAgaWYgKGNoaWxkID09IHBhcmVudCkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIERGUyhjaGlsZCwgbm9kZSwgRyk7CgogICAgICAgICAgICBiZXN0Q2hpbGQgPSBNYXRoLm1heChiZXN0Q2hpbGQsIHN1bVtjaGlsZF0pOwogICAgICAgIH0KCiAgICAgICAgc3VtW25vZGVdID0gYltub2RlXSArIGJlc3RDaGlsZDsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgU2Nhbm5lciBzY2FubmVyID0gbmV3IFNjYW5uZXIoU3lzdGVtLmluKTsKCiAgICAgICAgaW50IG4gPSBzY2FubmVyLm5leHRJbnQoKTsKCiAgICAgICAgYiA9IG5ldyBpbnRbbiArIDFdOwogICAgICAgIHN1bSA9IG5ldyBsb25nW24gKyAxXTsKCiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgICAgIGJbaV0gPSBzY2FubmVyLm5leHRJbnQoKTsKICAgICAgICB9CgogICAgICAgIExpc3Q8SW50ZWdlcj5bXSBHID0gbmV3IExpc3RbbiArIDFdOwoKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8PSBuOyBpKyspIHsKICAgICAgICAgICAgR1tpXSA9IG5ldyBBcnJheUxpc3Q8PigpOwogICAgICAgIH0KCiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbiAtIDE7IGkrKykgewogICAgICAgICAgICBpbnQgdSA9IHNjYW5uZXIubmV4dEludCgpOwogICAgICAgICAgICBpbnQgdiA9IHNjYW5uZXIubmV4dEludCgpOwoKICAgICAgICAgICAgR1t1XS5hZGQodik7CiAgICAgICAgICAgIEdbdl0uYWRkKHUpOwogICAgICAgIH0KCiAgICAgICAgREZTKDEsIDAsIEcpOwoKICAgICAgICBsb25nIGFuc3dlciA9IExvbmcuTUlOX1ZBTFVFOwoKICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICAgICAgYW5zd2VyID0gTWF0aC5tYXgoYW5zd2VyLCBzdW1baV0pOwogICAgICAgIH0KCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGFuc3dlcik7CiAgICB9Cn0=