#include<fstream>
#include<vector>
#include<unordered_map>
#include<iostream>
#include<queue>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int n,m,pr[35][250005],a,q,p;
int main()
{
fin>>n>>m;
for(int i=1;i<=n;i++)
fin>>pr[0][i];
for(int j=1;j<=28;j++)
for(int i=1;i<=n;i++)
if(pr[j-1][i])
pr[j][i]=pr[j-1][pr[j-1][i]];
for(int i=1;i<=m;i++)
{
fin>>q>>p;
a=q;
for(int j=28;j>=0&&p;j--)
while(p>=(1<<j))
{
// cout<<p<<' '<<j<<' '<<q<<'\n';
p-=(1<<j);
a=pr[j][a];
}
fout<<a<<'\n';
}
}