#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
const int NMAX=25e4;
int n, m;
int tata[NMAX], dp[32][NMAX];
int main()
{
fin>>n>>m;
for(int i=1;i<=n;i++){
fin>>tata[i];
}
for(int i=1;i<=n;i++){
dp[0][i]=tata[i];
}
for(int p=1;p<=30;p++){
for(int i=1;i<=n;i++){
dp[p][i]=dp[p-1][dp[p-1][i]];
// cout<<p<<" "<<i<<" "<<dp[p][i]<<'\n';
}
}
int k, nod;
while(m--){
fin>>nod>>k;
for(int i=0;i<=30;i++){
if((k&(1<<i))){
// cout<<k<<" "<<i<<" "<<dp[i][nod]<<'\n';
nod=dp[i][nod];
}
}
fout<<nod<<'\n';
}
return 0;
}