#include using namespace std; #define pb push_back using ll = long long int; const int N = 3e5+9; vector adj[N]; int A[N], B[N], ans[N]; void dfs(int u) { int k = adj[u].size(); for(int i = 0; i < k; ++i) { int v = adj[u][i]; A[v] = A[u]+B[u]*i; B[v] = k*B[u]; dfs(v); } } int main(){ cin.tie(NULL); ios_base::sync_with_stdio(0); int n, q; cin >> n >> q; for(int i = 1; i < n; ++i) { int p; cin >> p; adj[p].pb(i); } A[0] = 1; B[0] = 1; dfs(0); /*for(int i = 0; i < n; ++i) { cout << A[i] << " " << B[i] << "\n"; }*/ for(int i = 0; i < n; ++i) { if(adj[i].size() == 0) { for(int j = A[i]; j <= q; j += B[i]) { ans[j] = i; } } } for(int i = 1; i <= q; ++i) { cout << ans[i] << "\n"; } return 0; }