/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
static void dfs(int node,List<List<Integer>> adj, int visited[], int parent[], int sum[], int arr[] )
{
visited[node]=1;
for(int ele:adj.get(node))
{
if(visited[ele]==0)
{
parent[ele]=node;
dfs(ele,adj,visited,parent,sum,arr);
}
}
int val=0;
for(int ele:adj.get(node))
{
if(ele!=parent[node])
{
val+=sum[ele];
}
}
sum[node]=arr[node]+val;
}
{
// your code goes here
Scanner sc
=new Scanner
(System.
in); int n=sc.nextInt();
List<List<Integer>> adj=new ArrayList<>();
int sum[]=new int[n+1];
int parent[]=new int[n+1];
int visited[]=new int[n+1];
for(int i=0;i<=n;i++)
adj.add(new ArrayList<>());
int arr[]=new int[n+1];
for(int i=1;i<=n;i++)
arr[i]=sc.nextInt();
for(int i=1;i<n;i++)
{
int u=sc.nextInt();
int v=sc.nextInt();
adj.get(u).add(v);
adj.get(v).add(u);
}
dfs(1,adj,visited,parent,sum,arr);
System.
out.
println("the sum for each dubtree till ith node is: "); int max=-99999;
for(int i=1;i<=n;i++)
{
max
=Math.
max(max,sum
[i
]); }
System.
out.
println("max value= "+max
);
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXN0YXRpYyB2b2lkIGRmcyhpbnQgbm9kZSxMaXN0PExpc3Q8SW50ZWdlcj4+IGFkaiwgaW50IHZpc2l0ZWRbXSwgaW50IHBhcmVudFtdLCBpbnQgc3VtW10sIGludCBhcnJbXSApCgl7CgkJdmlzaXRlZFtub2RlXT0xOwoJCWZvcihpbnQgZWxlOmFkai5nZXQobm9kZSkpCgkJewoJCQlpZih2aXNpdGVkW2VsZV09PTApCgkJCXsKCQkJCXBhcmVudFtlbGVdPW5vZGU7CgkJCQlkZnMoZWxlLGFkaix2aXNpdGVkLHBhcmVudCxzdW0sYXJyKTsKCQkJfQoJCX0KCQkKCQkKCQlpbnQgdmFsPTA7CgkJZm9yKGludCBlbGU6YWRqLmdldChub2RlKSkKCQl7CgkJCWlmKGVsZSE9cGFyZW50W25vZGVdKQoJCQl7CgkJCQl2YWwrPXN1bVtlbGVdOwoJCQl9CgkJfQoJCXN1bVtub2RlXT1hcnJbbm9kZV0rdmFsOwoJfQoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJCVNjYW5uZXIgc2M9bmV3IFNjYW5uZXIoU3lzdGVtLmluKTsKCQlpbnQgbj1zYy5uZXh0SW50KCk7CgkgICBMaXN0PExpc3Q8SW50ZWdlcj4+IGFkaj1uZXcgQXJyYXlMaXN0PD4oKTsKCSAgIGludCBzdW1bXT1uZXcgaW50W24rMV07CgkgICBpbnQgcGFyZW50W109bmV3IGludFtuKzFdOwoJICAgaW50IHZpc2l0ZWRbXT1uZXcgaW50W24rMV07CgkgICAKCSAgIGZvcihpbnQgaT0wO2k8PW47aSsrKQoJICAgYWRqLmFkZChuZXcgQXJyYXlMaXN0PD4oKSk7CgkgICAKCSAgIGludCBhcnJbXT1uZXcgaW50W24rMV07CgkgICBmb3IoaW50IGk9MTtpPD1uO2krKykKCSAgIGFycltpXT1zYy5uZXh0SW50KCk7CgkgICAKCSAgIGZvcihpbnQgaT0xO2k8bjtpKyspCgkgICB7CgkgICAJaW50IHU9c2MubmV4dEludCgpOwoJICAgCWludCB2PXNjLm5leHRJbnQoKTsKCSAgIAlhZGouZ2V0KHUpLmFkZCh2KTsKCSAgIAlhZGouZ2V0KHYpLmFkZCh1KTsKCSAgIAkKCSAgIH0KCSAgIAoJICAgCgkgICBkZnMoMSxhZGosdmlzaXRlZCxwYXJlbnQsc3VtLGFycik7CgkgICAKCSAgIFN5c3RlbS5vdXQucHJpbnRsbigidGhlIHN1bSBmb3IgZWFjaCBkdWJ0cmVlIHRpbGwgaXRoIG5vZGUgaXM6ICIpOwoJICAgaW50IG1heD0tOTk5OTk7CgkgICBmb3IoaW50IGk9MTtpPD1uO2krKykKCSAgIHsKCQkJIFN5c3RlbS5vdXQucHJpbnQoc3VtW2ldKyIgIik7CgkJCSBtYXg9TWF0aC5tYXgobWF4LHN1bVtpXSk7CgkgICB9CgkgICBTeXN0ZW0ub3V0LnByaW50bG4oIm1heCB2YWx1ZT0gIittYXgpOwoJCQoJfQp9