#include <bits/stdc++.h>
using namespace std;
int getRoot(int node,vector<int> &P){
while(P[node]!=node){
node=P[node];
}
return node;
}
int find(int n1,int n2,vector<int> &P){
return getRoot(n1,P)==getRoot(n2,P);
}
void unioN(int n1,int n2,vector<int> &P,vector<int> &size,int &maxi){
if(find(n1,n2,P)==1)return;
int rootN1=getRoot(n1,P);
int rootN2=getRoot(n2,P);
int sizeN1=size[rootN1];
int sizeN2=size[rootN2];
if(sizeN1>sizeN2){
P[rootN2]=rootN1;
size[rootN1]+=size[rootN2];
maxi=max(maxi,size[rootN1]);
}
else{
P[rootN1]=rootN2;
size[rootN2]+=size[rootN1];
maxi=max(maxi,size[rootN2]);
}
return;
}
vector<int> solve(int A, vector<int> &B, vector<int> &C, vector<int> &D) {
map<int,bool> ntMe;
for(int i=0;i<D.size();i++){
ntMe[D[i]-1]=true;
}
int maxi=1;
vector<int> parent(A+1),size(A+1);
for(int i=0;i<=A;i++){
parent[i]=i;
size[i]=1;
}
for(int i=0;i<B.size();i++){
if(!ntMe[i]){
unioN(B[i],C[i],parent,size,maxi);
}
}
vector<int> ans(D.size());
for(int i=D.size()-1;i>=0;i--){
ans[i]=maxi;
unioN(B[D[i]-1],C[D[i]-1],parent,size,maxi);
}
return ans;
}
int main() {
int a,q;
cin>>a>>q;
vector<int> B(a-1),C(a-1),D(q);
for(int i=0;i<a-1;i++){
cin>>B[i];
}
for(int i=0;i<a-1;i++){
cin>>C[i];
}
for(int i=0;i<q;i++){
cin>>D[i];
}
vector<int> ans;
ans=solve(a,B,C,D);
for(int i=0;i<ans.size();i++){
cout<<ans[i]<<" ";
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgZ2V0Um9vdChpbnQgbm9kZSx2ZWN0b3I8aW50PiAmUCl7CiAgICB3aGlsZShQW25vZGVdIT1ub2RlKXsKICAgICAgICBub2RlPVBbbm9kZV07CiAgICB9CiAgICByZXR1cm4gbm9kZTsKfQoKaW50IGZpbmQoaW50IG4xLGludCBuMix2ZWN0b3I8aW50PiAmUCl7CiAgICByZXR1cm4gZ2V0Um9vdChuMSxQKT09Z2V0Um9vdChuMixQKTsKfQoKdm9pZCB1bmlvTihpbnQgbjEsaW50IG4yLHZlY3RvcjxpbnQ+ICZQLHZlY3RvcjxpbnQ+ICZzaXplLGludCAmbWF4aSl7CiAgICBpZihmaW5kKG4xLG4yLFApPT0xKXJldHVybjsKICAgIGludCByb290TjE9Z2V0Um9vdChuMSxQKTsKICAgIGludCByb290TjI9Z2V0Um9vdChuMixQKTsKICAgIGludCBzaXplTjE9c2l6ZVtyb290TjFdOwogICAgaW50IHNpemVOMj1zaXplW3Jvb3ROMl07CiAgICBpZihzaXplTjE+c2l6ZU4yKXsKICAgICAgICBQW3Jvb3ROMl09cm9vdE4xOwogICAgICAgIHNpemVbcm9vdE4xXSs9c2l6ZVtyb290TjJdOwogICAgICAgIG1heGk9bWF4KG1heGksc2l6ZVtyb290TjFdKTsKICAgIH0KICAgIGVsc2V7CiAgICAgICAgUFtyb290TjFdPXJvb3ROMjsKICAgICAgICBzaXplW3Jvb3ROMl0rPXNpemVbcm9vdE4xXTsKICAgICAgICBtYXhpPW1heChtYXhpLHNpemVbcm9vdE4yXSk7CiAgICB9CiAgICByZXR1cm47Cn0KCnZlY3RvcjxpbnQ+IHNvbHZlKGludCBBLCB2ZWN0b3I8aW50PiAmQiwgdmVjdG9yPGludD4gJkMsIHZlY3RvcjxpbnQ+ICZEKSB7CiAgICBtYXA8aW50LGJvb2w+IG50TWU7CiAgICBmb3IoaW50IGk9MDtpPEQuc2l6ZSgpO2krKyl7CiAgICAgICAgbnRNZVtEW2ldLTFdPXRydWU7CiAgICB9CiAgICBpbnQgbWF4aT0xOwogICAgdmVjdG9yPGludD4gcGFyZW50KEErMSksc2l6ZShBKzEpOwogICAgZm9yKGludCBpPTA7aTw9QTtpKyspewogICAgICAgIHBhcmVudFtpXT1pOwogICAgICAgIHNpemVbaV09MTsKICAgIH0KICAgIAogICAgZm9yKGludCBpPTA7aTxCLnNpemUoKTtpKyspewogICAgICAgIGlmKCFudE1lW2ldKXsKICAgICAgICAgICAgdW5pb04oQltpXSxDW2ldLHBhcmVudCxzaXplLG1heGkpOwogICAgICAgIH0KICAgIH0KICAgIHZlY3RvcjxpbnQ+IGFucyhELnNpemUoKSk7CiAgICBmb3IoaW50IGk9RC5zaXplKCktMTtpPj0wO2ktLSl7CiAgICAgICAgYW5zW2ldPW1heGk7CiAgICAgICAgdW5pb04oQltEW2ldLTFdLENbRFtpXS0xXSxwYXJlbnQsc2l6ZSxtYXhpKTsKICAgIH0KICAgIHJldHVybiBhbnM7Cn0KCgppbnQgbWFpbigpIHsKICAgIGludCBhLHE7CiAgICBjaW4+PmE+PnE7CiAgICB2ZWN0b3I8aW50PiBCKGEtMSksQyhhLTEpLEQocSk7CiAgICBmb3IoaW50IGk9MDtpPGEtMTtpKyspewogICAgCWNpbj4+QltpXTsKICAgIH0KICAgIGZvcihpbnQgaT0wO2k8YS0xO2krKyl7CiAgICAJY2luPj5DW2ldOwogICAgfQogICAgZm9yKGludCBpPTA7aTxxO2krKyl7CiAgICAJY2luPj5EW2ldOwogICAgfQogICAgCiAgICB2ZWN0b3I8aW50PiBhbnM7CiAgICBhbnM9c29sdmUoYSxCLEMsRCk7CiAgICBmb3IoaW50IGk9MDtpPGFucy5zaXplKCk7aSsrKXsKICAgIAljb3V0PDxhbnNbaV08PCIgIjsKICAgIH0KCXJldHVybiAwOwp9