#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
const int Nmax = 250005;
int n, m;
int log2[Nmax], s[Nmax][22];
int main()
{
int x, y, z, t;
fin >> n >> m;
for ( int i = 1; i <= n; i++ )
{
fin >> x;
s[i][0] = x;
}
// log2[1] = 0;
// for ( int i = 2; i <= n; i++ )
// log2[i] = log2[i/2] + 1;
for ( int j = 0; j <= log2[n]; j++ )
for ( int i = 1; i <= n; i++ )
s[i][j+1] = s[s[i][j]][j];
for ( int i = 1; i <= m; i++ )
{
fin >> x >> y;
while(y > 0)
{
for ( t = 0, z = 1; z * 2 <= y; ++t)
z = z * 2;
x = s[x][t];
y = y - z;
}
fout << x << '\n';
}
fin.close();
fout.close();
return 0;
}