#include<bits/stdc++.h>
using namespace std;
long long n,x,q;
string s;
long long head[10000010],tot,c[10000010];
struct Tree{
long long to,from;
}t[10000010];
void add(long long u,long long v){
t[++tot].to=v;
t[tot].from=head[u];
head[u]=tot;
}
void dfs(long long u){
for(long long i=head[u];i;i=t[i].from){
long long v=t[i].to;
c[v]=1-c[v];
dfs(v);
}
}
int main(){
scanf("%lld",&n);
for(long long i=2;i<=n;i++){
scanf("%lld",&x);
add(x,i);
}
cin>>s;
scanf("%lld",&q);
for(long long i=0;i<n;i++){
if(s[i]=='0') c[i+1]=0;
else c[i+1]=1;
}
while(q--){
scanf("%lld",&x);
dfs(x);
c[x]=1-c[x];
}
for(long long i=1;i<=n;i++) printf("%lld",c[i]);
return 0;
}