#include #define REP(i, n) for(int i = 0; i < (int) (n); ++i) #define FOR(i, j, k) for(int i = (j); i <= (k); ++i) #define FORD(i, j, k) for(int i = (j); i >= (k); --i) #define SIZE 345678 using namespace std; typedef long long ll; int n; ll t[SIZE]; vector e[SIZE]; ll result; vector dfs(int v, int p){ vector ret(21,0); int val = t[v]; result+=val; REP(i, 20)if(val&(1< uret = dfs(u, v); REP(i, 20)if(val&(1<> n; REP(i, n) cin >> t[i]; int a, b; REP(i, n-1){ cin >> a >> b; e[a].push_back(b); e[b].push_back(a); } result = 0; dfs(0,-1); cout << result << endl; return 0; }