#include<bits/stdc++.h>
#define int long long
using namespace std;
vector<vector<int> > n1;
vector<int> n2;
vector<int> n3;
int hi1 = 0;
bool hi2 = false;
void hi(int n,int p){
int x = 0;
int x1 = 0;
for (int i = 0;i<n1[n].size();i++){
if (n1[n][i]!=p) {hi(n1[n][i],n);x = x+n3[n1[n][i]];}
}
x = x+n3[n];
if (x%2!=n2[n]%2) {
if (p==-1) hi2 = true;
hi1++;
if (n1[n].size()==1) {n3[n]++;}
else n3[p]++;}
}
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
int n;
cin>>n;
n1.resize(n);
n2.resize(n);
n3.assign(n,0);
vector<int> n4;
n4.assign(n,0);
for (int i = 0;i<n-1;i++){
int a,b;
cin>>a>>b;
n1[a-1].push_back(b-1);
n1[b-1].push_back(a-1);
if (n1[a-1].size()>1) n4[a-1] = 1;
if (n1[b-1].size()>1) n4[b-1] = 1;
}
for (int i = 0;i<n;i++) cin>>n2[i];
int c= -1;
for (int i = 0;i<n;i++){
if (n4[i]==0) {c = i;break;}
}
hi(c,-1);
if (!hi2) cout<<hi1;
else cout<<"impossible";
return 0;
}