/* 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 src, List<List<Integer>> adj, int parent[], int depth[],
int dp[], int visited[], int val[]
)
{
visited[src]=1;
for(int child:adj.get(src))
{
if(visited[child]==0)
{
parent[child]=src;
depth[child]=depth[src]+1;
dfs(child,adj,parent,depth,dp,visited,val);
}
}
dp[src]= val[src] ^ depth[src];
for(int ele: adj.get(src))
{
if(ele!=parent[src])
dp[src]+=dp[ele];
}
}
{
// your code goes here
Scanner sc
=new Scanner
(System.
in); int n=sc.nextInt();
List<List<Integer>> adj=new ArrayList<>();
for(int i=0;i<=n;i++)
adj.add(new ArrayList<>());
//values for nodes
int val[]=new int[n+1];
for(int i=1;i<=n;i++)
val[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);
}
int visited[]=new int[n+1];
int parent[]=new int[n+1];
int depth[]=new int[n+1];
int dp[]=new int[n+1];
dfs(1,adj,parent,depth,dp,visited,val);
for(int i=1;i<=n;i++)
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgoKLyogTmFtZSBvZiB0aGUgY2xhc3MgaGFzIHRvIGJlICJNYWluIiBvbmx5IGlmIHRoZSBjbGFzcyBpcyBwdWJsaWMuICovCmNsYXNzIElkZW9uZQp7CgkKCXN0YXRpYyB2b2lkIGRmcyhpbnQgc3JjLCBMaXN0PExpc3Q8SW50ZWdlcj4+IGFkaiwgaW50IHBhcmVudFtdLCBpbnQgZGVwdGhbXSwgCglpbnQgZHBbXSwgaW50IHZpc2l0ZWRbXSwgaW50IHZhbFtdCgkpCgl7CgkJdmlzaXRlZFtzcmNdPTE7CgkJCgkJZm9yKGludCBjaGlsZDphZGouZ2V0KHNyYykpCgkJewoJCQlpZih2aXNpdGVkW2NoaWxkXT09MCkKCQkJewoJCQkJcGFyZW50W2NoaWxkXT1zcmM7CgkJCQoJCQkJZGVwdGhbY2hpbGRdPWRlcHRoW3NyY10rMTsKCQkJCQoJCQkJCgkJCQlkZnMoY2hpbGQsYWRqLHBhcmVudCxkZXB0aCxkcCx2aXNpdGVkLHZhbCk7CgkJCX0KCQl9CgkJCgkJCgkJZHBbc3JjXT0gdmFsW3NyY10gXiBkZXB0aFtzcmNdOwoJCWZvcihpbnQgZWxlOiBhZGouZ2V0KHNyYykpCgkJewoJCQlpZihlbGUhPXBhcmVudFtzcmNdKQoJCQlkcFtzcmNdKz1kcFtlbGVdOwoJCQkKCQl9Cgl9CgkKCQoJCglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKCQkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCgkJU2Nhbm5lciBzYz1uZXcgU2Nhbm5lcihTeXN0ZW0uaW4pOwoJCWludCBuPXNjLm5leHRJbnQoKTsKCQlMaXN0PExpc3Q8SW50ZWdlcj4+IGFkaj1uZXcgQXJyYXlMaXN0PD4oKTsKCQkKCQlmb3IoaW50IGk9MDtpPD1uO2krKykKCQlhZGouYWRkKG5ldyBBcnJheUxpc3Q8PigpKTsKCQkKCQkvL3ZhbHVlcyBmb3Igbm9kZXMKCQlpbnQgdmFsW109bmV3IGludFtuKzFdOwoJCQoJCWZvcihpbnQgaT0xO2k8PW47aSsrKQoJCXZhbFtpXT1zYy5uZXh0SW50KCk7CgkJCgkJCgkJZm9yKGludCBpPTE7aTxuO2krKykKCQl7CgkJCWludCB1PXNjLm5leHRJbnQoKTsKCQkJaW50IHY9c2MubmV4dEludCgpOwoJCQlhZGouZ2V0KHUpLmFkZCh2KTsKCQkJYWRqLmdldCh2KS5hZGQodSk7CgkJfQoJCQoJCWludCB2aXNpdGVkW109bmV3IGludFtuKzFdOwoJCWludCBwYXJlbnRbXT1uZXcgaW50W24rMV07CgkJCgkJaW50IGRlcHRoW109bmV3IGludFtuKzFdOwoJCQoJCWludCBkcFtdPW5ldyBpbnRbbisxXTsKCQkKCQlkZnMoMSxhZGoscGFyZW50LGRlcHRoLGRwLHZpc2l0ZWQsdmFsKTsKCQkKCQlmb3IoaW50IGk9MTtpPD1uO2krKykKCQlTeXN0ZW0ub3V0LnByaW50KGRwW2ldKyIgIik7CgkJCgkJCgkJCgl9Cn0=