#include <bits/stdc++.h>
using namespace std;
const long long inf = 1e18;
const long long maxn = 3e5 + 10;
vector<long long> v[maxn];
long long Sz[maxn], ans[maxn], h;
deque<long long> deq[maxn];
void dfs(long long u, deque<long long>& d) {
  d.push_back(u);
  if ((v[u]).size() == 0) {
    while ((d).size()) {
      ans[d[0]] = u;
      d.pop_front();
    }
    return;
  }
  long long ind = -1, mx = v[u][0];
  for (long long i = 0; i < (v[u]).size(); i++) {
    long long y = v[u][i];
    if (Sz[y] > Sz[mx]) mx = y;
  }
  while ((d).size() && ((Sz[d[0]] - 1) / 2) >= Sz[mx]) {
    ans[d[0]] = u;
    d.pop_front();
  }
  dfs(mx, d);
  for (long long i = 0; i < (v[u]).size(); i++) {
    long long y = v[u][i];
    if (y != mx) dfs(y, deq[++h]);
  }
}
void Size(long long u) {
  Sz[u] = 1;
  for (long long i = 0; i < (v[u]).size(); i++) {
    long long y = v[u][i];
    Size(y);
    Sz[u] += Sz[y];
  }
}
int main() {
  long long n, q;
  cin >> n >> q;
  for (long long i = 2; i <= n; i++) {
    long long x;
    cin >> x;
    v[x].push_back(i);
  }
  Size(1);
  dfs(1, deq[0]);
  for (long long i = 0; i < q; i++) {
    long long a;
    cin >> a;
    cout << ans[a] << endl;
  }
}
