#include <bits/stdc++.h>
using namespace std;
const int maxN = 1000009;
map<string, int> mapa;
int n, m, k, a, parent[maxN], used[maxN], rozmiar[maxN], centr[maxN], q;
vector<int> graf[maxN];
string s, s1;
void DFS(int start) {
  used[start] = 1;
  for (int i = 0; i < graf[start].size(); i++) {
    if (!used[graf[start][i]]) {
      DFS(graf[start][i]);
      rozmiar[start] += rozmiar[graf[start][i]];
    }
  }
  rozmiar[start]++;
  for (int i = 0; i < graf[start].size(); i++) {
    if (graf[start][i] != parent[start]) {
      if (rozmiar[graf[start][i]] > rozmiar[start] / 2) {
        if (rozmiar[start] - rozmiar[centr[graf[start][i]]] <=
            rozmiar[start] / 2)
          centr[start] = centr[graf[start][i]];
        else {
          int x = parent[centr[graf[start][i]]];
          while (1) {
            if (rozmiar[start] - rozmiar[x] <= rozmiar[start] / 2) {
              centr[start] = x;
              break;
            }
            x = parent[x];
          }
        }
      }
    }
  }
  if (centr[start] == 0) centr[start] = start;
}
int main() {
  scanf("%d%d", &n, &q);
  for (int i = 2; i <= n; i++) {
    scanf("%d", &a);
    parent[i] = a;
    graf[i].push_back(a);
    graf[a].push_back(i);
  }
  DFS(1);
  for (int i = 0; i < q; i++) {
    scanf("%d", &a);
    printf("%d\n", centr[a]);
  }
  return 0;
}
