#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[250005][35],a,q,p;
int main()
{
fin>>n>>m;
for(int i=1;i<=n;i++)
fin>>pr[i][0];
for(int j=1;j<=28;j++)
for(int i=1;i<=n;i++)
pr[i][j]=pr[pr[i][j-1]][j-1];
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[a][j];
}
fout<<a<<'\n';
}
}