#include <iostream>
#include <cstdio>
#include <fstream>
using namespace std;
#define maxN 250005
#define maxLog 25
#define maxLLog 19
int n,m,i,j,q,p,tmp;
int dp[maxN][maxLog];
int main()
{
/*freopen("stramosi.in","r",stdin);
freopen("stramosi.out","w",stdout);*/
ifstream in("stramosi.in");
ofstream out("stramosi.out");
//scanf("%ld %ld\n",&n,&m);
//for(i=1;i<=n;i++) scanf("%ld",&dp[i][0]);
in >> n >> m;
for(i=1;i<=n;i++) in >> dp[i][0];
for(j=1;j<=18;j++)
for(i=1;i<=n;i++)
dp[i][j] = dp[dp[i][j-1]][j-1];
for(;m;m--){
//scanf("%ld %ld",&q,&p);
in >> q >> p;
for(i=0;p;p/=2,i++)
if(p%2==1)
q = dp[q][i];
//printf("%ld\n",q);
out << q << '\n';
}
return 0;
}