 #include<bits/stdc++.h>
 using namespace std;
 #define ll long long
 #define pb push_back
 ll mod =  1e9+7;
 #define f first
 #define ss second
 #define mxx(x) max_element(x.begin(), x.end()) - x.begin()
 #define mnn(x) min_element(x.begin(), x.end()) - x.begin()
 #define fast_io ios_base::sync_with_stdio(false);cin.tie(NULL)
 #define all(x) x.begin(), x.end()
 #define sz(x) x.size()
 
 // binary lifting seekh le bro
 
 void test_cases(){
 
     ll n,q;
     ll a , k ;
     cin>>n>>q;
 
     vector<ll>arr(n);
 
     for(ll i = 0; i < n ;i++ ){
         cin>>arr[i];
     }
 
     vector<vector<ll>>up(n , vector<ll>(31, -1));
 
     for(ll i=0;i<n;i++){
         up[i][0] = arr[i]-1;
     }
 
         for(ll j = 1; j < 31; j++){ 
             for(ll i = 0 ; i < n ;i++){
 
             if(up[i][j-1] == -1){
                 up[i][j] = -1;
                 continue;
             }
 
             up[i][j] = up[up[i][j-1]][j-1];
         }
     }
     // 183772 129965406
     while(q--){
 
         cin>>a>>k;
         a--;
 
         ll L = 30;
 
         ll st = a;
         while(L>=0){
             if(1<<L <= k){
                 k-=(1<<L);
                 a = up[a][L];
                 if(a==-1){
                     a = st;
                     break;
                 }
             }
             L--;
         }
         cout<<a+1<<"\n";
     }
 } 
 
 int main(){
  
     fast_io;
     ll t=1;
     // cin>>t;
 
     while(t--){
       
         test_cases();
         cout<<"\n";
     }
 }