#include<bits/stdc++.h>
using namespace std;
int dep[100001];
int f[100001][25];
bool vis[100001];
vector<int>g[100001];
void pre(int u,int dad){
dep[u]=dep[dad]+1;
f[u][0]=dad;
vis[u]=1;
for(int i=0;i<20;i++){
f[u][i+1]=f[f[u][i]][i];
}
for(int i=0;i<g[u].size();i++){
int v=g[u][i];
if(vis[v]){
continue;
}
pre(v,u);
}
}
int lca(int x,int y){
if(dep[x]<dep[y]){
swap(x,y);
}
for(int i=20;i>=0;i--){
if(dep[f[x][i]]>=dep[y]){
x=f[x][i];
}
if(x==y){
return x;
}
}
for(int i=20;i>=0;i--){
if(f[x][i]!=f[y][i]){
x=f[x][i];
y=f[y][i];
}
}
return f[x][0];
}
int main(){
int n,m;
scanf("%d",&n);
int x,y;
for(int i=1;i<n;i++){
scanf("%d",&x);
g[x].push_back(i);
g[i].push_back(x);
}
pre(0,n+1);
scanf("%d",&m);
for(int i=1;i<=m;i++){
int k;
int ans;
scanf("%d",&k);
for(int j=1;j<=k;j++){
int x;
scanf("%d",&x);
if(j==1){
ans=x;
}else{
ans=lca(ans,x);
}
}
printf("%d\n",ans);
}
return 0;
}