#include<bits/stdc++.h>
using namespace std;
const int inf=2147483647;
int n,q;
int weizhi[100005];
int duiying[100005];
int color[100005];
struct Node
{
int zuxian,hao;
}a[100005];
void bian(int x)
{
if (weizhi[x]==inf) return;
color[weizhi[x]]=(color[weizhi[x]]+1)%2;
bian(x*2);
bian(x*2+1);
}
bool cmp(Node x,Node y)
{
return x.zuxian<y.zuxian;
}
int main()
{
cin >> n;
for (int i=1;i<=200000;i++)
weizhi[i]=inf;
weizhi[1]=1;
duiying[1]=1;
for (int i=1;i<n;i++)
{
cin >> a[i].zuxian;
a[i].hao=i+1;
}
sort(a+1,a+n,cmp);
for (int i=1;i<n;i++)
{
if (weizhi[duiying[a[i].zuxian]*2]!=inf)
{
weizhi[duiying[a[i].zuxian]*2+1]=a[i].hao;
duiying[a[i].hao]=duiying[a[i].zuxian]*2+1;
}
else
{
weizhi[duiying[a[i].zuxian]*2]=a[i].hao;
duiying[a[i].hao]=duiying[a[i].zuxian]*2;
}
}
for (int i=1;i<=n;i++)
{
int x;
scanf("%1d",&x);
color[i]=x;
}
n=n*2;
cin >> q;
for (int i=1;i<=q;i++)
{
int x;
cin >> x;
bian(duiying[x]);
for (int i=1;i<=n;i++)
if (weizhi[i]!=inf) cout << color[i];
return 0;
}