#include<bits/stdc++.h>
#pragma GCC optimize("O3,unroll-loops")
#define int long long
#define ll long long
#define maxn 2000005
#define itachi ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define fi first
#define sti string
#define se second
using namespace std;
vector<int> adj[maxn];
int sz[maxn],heavy[maxn];
int n,q,Timer=0,node[maxn];
int In[maxn],Out[maxn];
set<int> S;
int ans[maxn],a[maxn],res=0;
int prexor[maxn];
bool bad[maxn];
void dfs(int u,int p){
sz[u]=1;
int Max=0;
In[u]=++Timer;
node[Timer]=u;
for(int v : adj[u]){
if(v==p) continue;
prexor[v]=prexor[u]^a[v];
dfs(v,u);
sz[u]+=sz[v];
if(sz[v] > Max){
Max=sz[v];
heavy[u]=v;
}
}
Out[u]=Timer;
}
void add(int u){
S.insert(prexor[u]);
}
void sub(int u){
auto it = S.find(prexor[u]);
if(it != S.end()) S.erase(it);
}
void sack(int u,int p,bool keep){
for(int v : adj[u]){
if(v==p || v==heavy[u]) continue;
sack(v,u,0);
}
if(heavy[u]) sack(heavy[u],u,1);
bool found=0;
for(int v : adj[u]){
if(v==p || v==heavy[u]) continue;
for(int pos=In[v];pos<=Out[v];pos++){
int x = node[pos];
if(bad[x]){
pos=Out[x];
continue;
}
if(S.count(prexor[x] ^ a[u])){
found=1;
break;
}
}
if(found) break;
for(int pos=In[v];pos<=Out[v];pos++){
int x = node[pos];
if(bad[x]){
pos = Out[x];
continue;
}
add(x);
}
}
if(S.count(prexor[u] ^ a[u])) found=1;
if(found){
res++;
bad[u]=1;
S.clear();
return ;
}
add(u);
if(!keep){
for(int pos=In[u];pos<=Out[u];pos++){
sub(node[pos]);
}
}
}
signed main() {
itachi
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=2;i<=n;i++){
int u,v;
cin>>u>>v;
adj[u].push_back(v);
adj[v].push_back(u);
}
prexor[1]=a[1];
dfs(1,0);
sack(1,0,1);
cout<<res;
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI3ByYWdtYSBHQ0Mgb3B0aW1pemUoIk8zLHVucm9sbC1sb29wcyIpCiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIG1heG4gMjAwMDAwNQojZGVmaW5lIGl0YWNoaSBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApO2Npbi50aWUoMCk7Y291dC50aWUoMCk7CiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzdGkgc3RyaW5nCiNkZWZpbmUgc2Ugc2Vjb25kCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdmVjdG9yPGludD4gYWRqW21heG5dOwppbnQgc3pbbWF4bl0saGVhdnlbbWF4bl07CmludCBuLHEsVGltZXI9MCxub2RlW21heG5dOwppbnQgSW5bbWF4bl0sT3V0W21heG5dOwpzZXQ8aW50PiBTOwppbnQgYW5zW21heG5dLGFbbWF4bl0scmVzPTA7CmludCBwcmV4b3JbbWF4bl07CmJvb2wgYmFkW21heG5dOwoKdm9pZCBkZnMoaW50IHUsaW50IHApewogICAgc3pbdV09MTsKICAgIGludCBNYXg9MDsKICAgIEluW3VdPSsrVGltZXI7CiAgICBub2RlW1RpbWVyXT11OwoKICAgIGZvcihpbnQgdiA6IGFkalt1XSl7CiAgICAgICAgaWYodj09cCkgY29udGludWU7CiAgICAgICAgcHJleG9yW3ZdPXByZXhvclt1XV5hW3ZdOwogICAgICAgIGRmcyh2LHUpOwogICAgICAgIHN6W3VdKz1zelt2XTsKICAgICAgICBpZihzelt2XSA+IE1heCl7CiAgICAgICAgICAgIE1heD1zelt2XTsKICAgICAgICAgICAgaGVhdnlbdV09djsKICAgICAgICB9CiAgICB9CgogICAgT3V0W3VdPVRpbWVyOwp9Cgp2b2lkIGFkZChpbnQgdSl7CiAgICBTLmluc2VydChwcmV4b3JbdV0pOwp9Cgp2b2lkIHN1YihpbnQgdSl7CiAgICBhdXRvIGl0ID0gUy5maW5kKHByZXhvclt1XSk7CiAgICBpZihpdCAhPSBTLmVuZCgpKSBTLmVyYXNlKGl0KTsKfQoKdm9pZCBzYWNrKGludCB1LGludCBwLGJvb2wga2VlcCl7CgogICBmb3IoaW50IHYgOiBhZGpbdV0pewogICAgICBpZih2PT1wIHx8IHY9PWhlYXZ5W3VdKSBjb250aW51ZTsKICAgICAgc2Fjayh2LHUsMCk7CiAgIH0KCiAgIGlmKGhlYXZ5W3VdKSBzYWNrKGhlYXZ5W3VdLHUsMSk7CgogICBib29sIGZvdW5kPTA7CgogICBmb3IoaW50IHYgOiBhZGpbdV0pewogICAgICBpZih2PT1wIHx8IHY9PWhlYXZ5W3VdKSBjb250aW51ZTsKICAgICAgZm9yKGludCBwb3M9SW5bdl07cG9zPD1PdXRbdl07cG9zKyspewogICAgICAgICAgaW50IHggPSBub2RlW3Bvc107CiAgICAgICAgICBpZihiYWRbeF0pewogICAgICAgICAgICAgcG9zPU91dFt4XTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgfQogICAgICAgICAgaWYoUy5jb3VudChwcmV4b3JbeF0gXiBhW3VdKSl7CiAgICAgICAgICAgICBmb3VuZD0xOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgaWYoZm91bmQpIGJyZWFrOwogICAgICBmb3IoaW50IHBvcz1Jblt2XTtwb3M8PU91dFt2XTtwb3MrKyl7CiAgICAgICAgICBpbnQgeCA9IG5vZGVbcG9zXTsKICAgICAgICAgIGlmKGJhZFt4XSl7CiAgICAgICAgICAgICAgcG9zID0gT3V0W3hdOwogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgfQogICAgICAgICAgYWRkKHgpOwogICAgICB9CiAgIH0KCiAgIGlmKFMuY291bnQocHJleG9yW3VdIF4gYVt1XSkpIGZvdW5kPTE7CgogICBpZihmb3VuZCl7CiAgICAgIHJlcysrOwogICAgICBiYWRbdV09MTsKICAgICAgUy5jbGVhcigpOwogICAgICByZXR1cm4gOwogICB9CgogICBhZGQodSk7CgogICBpZigha2VlcCl7CiAgICAgZm9yKGludCBwb3M9SW5bdV07cG9zPD1PdXRbdV07cG9zKyspewogICAgICAgIHN1Yihub2RlW3Bvc10pOwogICAgIH0KICAgfQp9CgpzaWduZWQgbWFpbigpIHsKICAgIGl0YWNoaQoKICAgIGNpbj4+bjsKICAgIGZvcihpbnQgaT0xO2k8PW47aSsrKSBjaW4+PmFbaV07CgogICAgZm9yKGludCBpPTI7aTw9bjtpKyspewogICAgICAgIGludCB1LHY7CiAgICAgICAgY2luPj51Pj52OwogICAgICAgIGFkalt1XS5wdXNoX2JhY2sodik7CiAgICAgICAgYWRqW3ZdLnB1c2hfYmFjayh1KTsKICAgIH0KCiAgICBwcmV4b3JbMV09YVsxXTsKCiAgICBkZnMoMSwwKTsKICAgIHNhY2soMSwwLDEpOwogICAgY291dDw8cmVzOwogICAgcmV0dXJuIDA7Cn0K