#include <cstdio>
#define Nmax 250005
using namespace std;
int t[20][Nmax],m,n;
FILE *in=fopen("stramosi.in","r");
FILE *out=fopen("stramosi.out","w");
void precalc()
{
for(int d=1; (1<<d)<=n;d++)
for(int j=1;j<=n;j++)
t[d][j] = t[d-1][t[d-1][j]];
}
int query(int q,int p)
{
int pas=1,ct=0;
while(pas <= p)
{
pas*=2;
ct++;
}
pas/=2;
ct--;
while(p)
{
if(p>=pas)
{
q = t[ct][q];
p = p - pas;
}
pas/=2;
ct--;
}
return q;
}
int main()
{
fscanf(in,"%d%d",&n,&m);
for(int i=1;i<=n;i++)
fscanf(in,"%d",&t[0][i]);
precalc();
while(m--)
{
int q,p;
fscanf(in,"%d%d",&q,&p);
fprintf(out,"%d\n",query(q,p));
}
return 0;
}