Cod sursa(job #479526)
#include <cstdio>
#define file_in "stramosi.in"
#define file_out "stramosi.out"
int n,m;
int s[19][250002];
void citire()
{
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
scanf("%d %d", &n, &m);
for (int i=1;i<=n;++i)
scanf("%d", &s[0][i]);
}
void prep()
{
for (int i=1;i<=18;++i)
for (int j=1;j<=n;++j)
s[i][j]=s[i-1][s[i-1][j]];
}
void solve()
{
int p,q,i;
prep();
while(m--)
{
scanf("%d %d", &q, &p);
while(p)
{
i=0;
while((1<<i)<=p) i++;
i--;
p-=(1<<i);
q=s[i][q];
}
printf("%d\n", q);
}
}
int main()
{
citire();
solve();
fclose(stdin);
fclose(stdout);
return 0;
}