#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[Lgn + 1][maxn + 1];
int main() {
fscanf(fin, "%d%d", &n, &m);
for(int i = 1;i <= n;i++)
fscanf(fin, "%d ", &tata[i]), dp[0][i] = tata[i];
lg = (int)log(n);
lg++;
for(int j = 1;j <= lg;j++)
for(int i = 1;i <= n;i++) {
dp[j][i] = dp[j - 1][dp[j - 1][i]];
}
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[put][ans];
}
p >>= 1, put++;
}
fprintf(fout, "%d\n", ans);
}
fclose(fin);
fclose(fout);
return 0;
}