#include <bits/stdc++.h>
using namespace std;
FILE *fin = fopen("stramosi.in", "r");
FILE *fout = fopen("stramosi.out", "w");
const int maxn = 250000, maxm = 300000, Lgn = 19;
int n, m, lg;
int tata[maxn + 1], dp[maxn + 1][Lgn + 2];
int main() {
fscanf(fin, "%d%d", &n, &m);
for(int i = 1;i <= n;i++)
fscanf(fin, "%d ", &tata[i]), dp[i][0] = tata[i];
for(int i = 1;i <= n;i++)
for(int j = 1;(1 << j) <= n;j++) {
dp[i][j] = dp[dp[i][j - 1]][j - 1];
}
for(int i = 1;i <= m;i++) {
int q, p;
fscanf(fin, "%d%d", &q, &p);
int ans = q, put = 0;
while(p) {
if(p & 1) {
ans = dp[ans][put];
}
p >>= 1, put++;
}
fprintf(fout, "%d\n", ans);
}
fclose(fin);
fclose(fout);
return 0;
}