#include <bits/stdc++.h>
using namespace std;
const int N = 300001;
int sz[N];
set<pair<int, int> > st[N];
vector<vector<int> > g;
int ans[N];
void dfs(int u, int p) {
  sz[u] = 1;
  for (int i = 0; i < g[u].size(); ++i) {
    int v = g[u][i];
    if (v != p) {
      dfs(v, u);
      sz[u] += sz[v];
    }
  }
  st[u].insert(make_pair(sz[u], u));
}
void dfs2(int u, int p) {
  set<pair<int, int> >::iterator it;
  for (int i = 0; i < g[u].size(); ++i) {
    int v = g[u][i];
    if (v != p) {
      dfs2(v, u);
      if (st[v].size() > st[u].size()) {
        st[u].swap(st[v]);
      }
      for (it = st[v].begin(); it != st[v].end(); ++it) {
        st[u].insert(*it);
      }
      st[v].clear();
    }
  }
  it = st[u].lower_bound(make_pair(ceil((double)sz[u] / 2), 0));
  ans[u] = it->second;
}
int main() {
  int n, q;
  cin >> n >> q;
  g.resize(n + 1);
  for (int i = 2, x; i <= n; ++i) {
    scanf("%d", &x);
    g[x].push_back(i);
    g[i].push_back(x);
  }
  dfs(1, -1);
  dfs2(1, -1);
  for (int i = 0, x; i < q; ++i) {
    scanf("%d", &x);
    printf("%d\n", ans[x]);
  }
  return 0;
}
