#include<bits/stdc++.h>
using namespace std;
const int maxn=100010;
int n,p,ans=0;
string op;
struct node{
bool b;
int fa;
int len;
int zi[maxn];
};
node a[maxn];
int read(){
int r=0;char c=getchar();
while(c<'0'||c>'9') c=getchar();
while(c>='0'&&c<='9') r=(r<<1)+(r<<3)+(c^48),c=getchar();
return r;
}
void install(int x){
if(!a[x].b){
ans++;
a[x].b=true;
}
if(x!=0) install(a[x].fa);
}
void uninstall(int x){
if(a[x].b){
ans++;
a[x].b=false;
}
for(int i=1;i<=a[x].len;i++){
uninstall(a[x].zi[i]);
}
}
int main(){
n=read();
for(int i=1;i<=n;i++){
a[i].b=false;
}
for(int i=1;i<n;i++){
a[i].fa=read();
a[a[i].fa].zi[++a[a[i].fa].len]=i;
}
p=read();
while(p--){
int x;
cin>>op;
x=read();
if(op[0]=='i') install(x);
else uninstall(x);
cout<<ans;
ans=0;
}
return 0;
}
编译器显示源文件未编译