#include <bits/stdc++.h>
using namespace std;
//
const int maxn = 1e5 + 5;
//
int n, q, V[maxn], rmq[maxn][30];
//
void build (void)
{
for (int i = 1; i <= n; ++i)
rmq[i][0] = V[i];
for (int j = 1; j < 30; ++j)
for (int i = 1; i <= n; ++i)
rmq[i][j] = rmq[rmq[i][j - 1]][j - 1];
}
int solve (int u, int x)
{
int v = u;
//
for (int i = 0; (1 << i) <= x; ++i)
if (x >> i & 1)
v = rmq[v][i];
return v;
}
//
void process (void)
{
cin >> n >> q;
for (int i = 1; i <= n; ++i)
cin >> V[i];
build();
for (int u, x; q--; cout << '\n')
cin >> u >> x,
cout << solve(u, x);
}
//
signed main (void)
{
ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
process();
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci8vCmNvbnN0IGludCBtYXhuID0gMWU1ICsgNTsKLy8KaW50IG4sIHEsIFZbbWF4bl0sIHJtcVttYXhuXVszMF07Ci8vCnZvaWQgYnVpbGQgKHZvaWQpCnsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47ICsraSkKICAgICAgICBybXFbaV1bMF0gPSBWW2ldOwogICAgZm9yIChpbnQgaiA9IDE7IGogPCAzMDsgKytqKQogICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47ICsraSkKICAgICAgICAgICAgcm1xW2ldW2pdID0gcm1xW3JtcVtpXVtqIC0gMV1dW2ogLSAxXTsKfQppbnQgc29sdmUgKGludCB1LCBpbnQgeCkKewogICAgaW50IHYgPSB1OwogICAgLy8KICAgIGZvciAoaW50IGkgPSAwOyAoMSA8PCBpKSA8PSB4OyArK2kpCiAgICAgICAgaWYgKHggPj4gaSAmIDEpCiAgICAgICAgICAgIHYgPSBybXFbdl1baV07CiAgICByZXR1cm4gdjsKfQovLwp2b2lkIHByb2Nlc3MgKHZvaWQpCnsKICAgIGNpbiA+PiBuID4+IHE7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyArK2kpCiAgICAgICAgY2luID4+IFZbaV07CiAgICBidWlsZCgpOwogICAgZm9yIChpbnQgdSwgeDsgcS0tOyBjb3V0IDw8ICdcbicpCiAgICAgICAgY2luID4+IHUgPj4geCwKICAgICAgICBjb3V0IDw8IHNvbHZlKHUsIHgpOwp9Ci8vCnNpZ25lZCBtYWluICh2b2lkKQp7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKSwgY2luLnRpZShudWxscHRyKSwgY291dC50aWUobnVsbHB0cik7CiAgICBwcm9jZXNzKCk7Cn0=