#include <stdio.h>
#define ptdoi 18
typedef long int lint;
long v[ptdoi]={1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072};
lint par[250001][ptdoi];
int main()
{
FILE *fi=fopen("stramosi.in","r"),
*fo=fopen("stramosi.out","w");
lint n,m,i,j,q,p;
fscanf(fi,"%ld %ld",&n,&m);
for(i=1;i<=n;i++)
fscanf(fi,"%ld",&par[i][0]);
for(i=1;i<=n;i++)
for(j=1;j<ptdoi;j++)
par[i][j]=par[par[i][j-1]][j-1];
for(j=1;j<=m;j++)
{
fscanf(fi,"%ld %ld",&q,&p);
i=ptdoi-1;
while (p)
{
while(v[i]>p) i--;
p-=v[i];
q=par[q][i];
}
fprintf(fo,"%ld\n",q);
}
fclose(fi);
fclose(fo);
return(0);
}