N=int(input()) D=[[] for _ in range(N)] for i in range(N-1): x,y=map(int, input().split()) x-=1;y-=1 D[x].append(y);D[y].append(x) B=list(map(int, input().split())) mod=10**9+7 E=[-1]*N E[0]=0 from collections import deque d=deque() d.append(0) F={};FF=[];P=[-1]*N while d: now=d.popleft() for nex in D[now]: if E[nex]==-1: E[nex]=E[now]+1 v=E[nex] d.append(nex) P[nex]=now if v not in F: F[v]=[] FF.append(v) F[v].append(nex) FF=sorted(FF)[::-1] ans=0 for b in range(30): dp=[[0]*2 for _ in range(N)] for i in range(N): if (B[i]&(1<