#include<bits/stdc++.h>
using namespace std;
struct asd{
int l;
int r;
int c;
int g;
}a[100005];
int n,m,b;
void dfs(int x,int gl){
if(a[x].g){
if(gl==1)
gl=0;
else gl=1;
}
if(gl){
if(a[x].c)
a[x].c=0;
else a[x].c=1;
}
if(a[x].r){
dfs(a[x].r,gl);
}
if(a[x].l)
dfs(a[x].l,gl);
return ;
}
string x;
int main(){
cin>>n;
for(int i=2;i<=n;i++){
cin>>b;
if(a[b].l==0)
a[b].l=i;
else a[b].r=i;
}
cin>>x;
for(int i=0;i<n;i++){
a[i+1].c=x[i]-'0';
}
cin>>m;
for(int i=1;i<=m;i++){
cin>>b;
a[b].g=1;
}
dfs(1,0);
for(int i=1;i<=n;i++){
cout<<a[i].c;
}
return 0;
}