#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define pb emplace_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define rall(x) (x).rbegin(),(x).rend()
#define inf 0x3f3f3f3f
#define pii pair<int,int>
const int N=(int)2e5+5;
int n,q;
vector<int> g[N];
int f[N][105];
int a[N];
void dfs(int u)
{
for(int v:g[u])
{
dfs(v);
for(int i=1;i<=100;i++)
f[u][i]+=f[v][i];
}
f[u][a[u]]=max(f[u][a[u]],1+f[u][a[u]-1]);
for(int i=1;i<=100;i++)
f[u][i]=max(f[u][i],f[u][i-1]);
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n>>q;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=2;i<=n;i++)
{
int p;
cin>>p;
g[p].pb(i);
}
dfs(1);
while(q--)
{
int x;
cin>>x;
cout<<f[x][100]<<'\n';
}
return 0;
}
/*
6 3
8 4 2 7 1 3
1 1 3 2 3
1
3
4
6 2
7 5 6 4 3 1
1 1 3 3 5
3
1
*/
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBsZCBsb25nIGRvdWJsZQojZGVmaW5lIHBiIGVtcGxhY2VfYmFjawojZGVmaW5lIG1wIG1ha2VfcGFpcgojZGVmaW5lIGFsbCh4KSAoeCkuYmVnaW4oKSwoeCkuZW5kKCkKI2RlZmluZSByYWxsKHgpICh4KS5yYmVnaW4oKSwoeCkucmVuZCgpCiNkZWZpbmUgaW5mIDB4M2YzZjNmM2YKI2RlZmluZSBwaWkgcGFpcjxpbnQsaW50PgoKY29uc3QgaW50IE49KGludCkyZTUrNTsKCmludCBuLHE7CnZlY3RvcjxpbnQ+IGdbTl07CmludCBmW05dWzEwNV07CmludCBhW05dOwoKdm9pZCBkZnMoaW50IHUpCnsKCWZvcihpbnQgdjpnW3VdKQoJewoJCWRmcyh2KTsKCQlmb3IoaW50IGk9MTtpPD0xMDA7aSsrKQoJCQlmW3VdW2ldKz1mW3ZdW2ldOwoJfQoJZlt1XVthW3VdXT1tYXgoZlt1XVthW3VdXSwxK2ZbdV1bYVt1XS0xXSk7Cglmb3IoaW50IGk9MTtpPD0xMDA7aSsrKQoJCWZbdV1baV09bWF4KGZbdV1baV0sZlt1XVtpLTFdKTsKfQoKc2lnbmVkIG1haW4oKQp7Cglpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CgljaW4udGllKDApOwoJY291dC50aWUoMCk7CgljaW4+Pm4+PnE7Cglmb3IoaW50IGk9MTtpPD1uO2krKykgY2luPj5hW2ldOwoJZm9yKGludCBpPTI7aTw9bjtpKyspCgl7CgkJaW50IHA7CgkJY2luPj5wOwoJCWdbcF0ucGIoaSk7Cgl9CglkZnMoMSk7Cgl3aGlsZShxLS0pCgl7CgkJaW50IHg7CgkJY2luPj54OwoJCWNvdXQ8PGZbeF1bMTAwXTw8J1xuJzsKCX0KCXJldHVybiAwOwp9Ci8qCjYgMwo4IDQgMiA3IDEgMwoxIDEgMyAyIDMKMQozCjQKCjYgMgo3IDUgNiA0IDMgMQoxIDEgMyAzIDUKMwoxCiovCg==