#include <cstdio>
#include <cstdlib>
using namespace std;
int const maxn = 250000;
int const maxm = 300000;
int const maxp = 18; // 2^maxp > maxn
int v[maxn], w[2*maxm];
int a[maxp][1+maxn];
int x[maxm];
int main ()
{
FILE * fin, * fout;
int n, m, i, j, s, t, k;
fin=fopen("stramosi.in","r");
setvbuf(fin, NULL, _IOFBF, 100 * 1024);
fscanf(fin, "%d %d\n", &n, &m);
for(i=0;i+10<n;i+=10)
fscanf(fin, "%d %d %d %d %d %d %d %d %d %d",
&v[0+i], &v[1+i], &v[2+i], &v[3+i], &v[4+i],
&v[5+i], &v[6+i], &v[7+i], &v[8+i], &v[9+i]);
for( ;i<n;i++)
fscanf(fin, "%d", &v[i]);
for(i=0, m=2*m;i+10<m;i+=10)
fscanf(fin, "%d %d %d %d %d %d %d %d %d %d",
&w[0+i], &w[1+i], &w[2+i], &w[3+i], &w[4+i],
&w[5+i], &w[6+i], &w[7+i], &w[8+i], &w[9+i]);
for( ;i<m;i++)
fscanf(fin, "%d", &w[i]);
fclose(fin);
a[0][0]=0;
for(j=0;j<n;j++)
a[0][1+j]=v[j];
for(i=1;i<maxp;i++)
for(j=0;j<=n;j++)
a[i][j]=a[-1+i][a[-1+i][j]];
for(k=0;k<m;k+=2) {
i=w[k]; j=w[k+1];
if(j&(1<<maxp)) {
w[k]=0;
} else {
for(s=-1+maxp;s>=0;s--) {
if(j&(t=(1<<s))) {
j=j-t;
i=a[s][i];
if(0==j) {
w[k]=i;
break;
}
}
}
}
}
fout=fopen("stramosi.out", "w");
setvbuf(fout, NULL, _IOFBF, 100 * 1024);
for(k=0;k+20<m;k+=20)
fprintf(fout, "%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n",
v[ 0 + k ], v[ 2 + k ], v[ 4 + k ], v[ 6 + k ], v[ 8 + k ],
v[10 + k ], v[12 + k ], v[14 + k ], v[16 + k ], v[18 + k ]);
for( ;k<m;k+=2)
fprintf(fout, "%d\n", w[k]);
fclose(fout);
return 0;
}