#include <bits/stdc++.h>
using namespace std;
const int MN = 2e5 + 100, inf = 1e9 + 100, mod = 1e9 + 7;
int n, q, plc[MN], sz[MN];
vector<int> v;
set<int> adj[MN];
void dfs(int V) {
  v.push_back(V);
  plc[V] = v.size() - 1;
  sz[V]++;
  for (int i : adj[V]) {
    dfs(i);
    sz[V] += sz[i];
  }
}
int32_t main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> q;
  for (int i = 0; i < n - 1; i++) {
    int p;
    cin >> p;
    adj[p].insert(i + 2);
  }
  dfs(1);
  for (int i = 0; i < q; i++) {
    int u, k;
    cin >> u >> k;
    int z = plc[u];
    if (k > sz[u]) {
      cout << -1 << endl;
    } else {
      cout << v[z + k - 1] << endl;
    }
  }
}
