#include "stdio.h"
struct{
int s;
}om[250001];
struct{
int r;
}r[300001];
void str(int q,int p,int i)
{
if(q==0) r[i].r=0;
else{
if(p>0) str(om[q].s,p-1,i);
else r[i].r=q;
}
}
int main()
{
int N,M,i,q,p;
char c;
FILE *f;
f=fopen("stramosi.in","r");
fscanf(f,"%d",&N);
fscanf(f,"%c",&c);
fscanf(f,"%d",&M);
fscanf(f,"%c",&c);
for(i=1;i<=N;i++)
{
fscanf(f,"%d",&om[i].s);
fscanf(f,"%c",&c);
}
for(i=1;i<=M;i++)
{
fscanf(f,"%d",&q);
fscanf(f,"%c",&c);
fscanf(f,"%d",&p);
fscanf(f,"%c",&c);
str(q,p,i);
}
fclose(f);
f=fopen("stramosi.out","w");
for(i=1;i<=M;i++)
{
fprintf(f,"%d\n",r[i].r);
}
fclose(f);
return 0;
}