#include using namespace std; #define st first #define nd second #define pb push_back using ll = long long; using db = double; using ldb = long double; using pii = pair; using pll = pair; const int N = 3e5 + 7; int ans[N]; vector g[N]; int q; void dfs(int v, int off, int cycle, int cnt) { if (g[v].empty()) { for (int i = off; i < q; i += cycle) ans[i] = v; return; } int sz = g[v].size(); int ns = cnt / sz; int ms = cnt % sz; for (int i = 0; i < sz; ++i) { int s = g[v][i]; dfs(s, off + i * cycle, cycle * sz, ns + (i < ms)); } } int main() { int n; scanf("%d%d", &n, &q); for (int i = 1; i < n; ++i) { int p; scanf("%d", &p); g[p].pb(i); } dfs(0, 0, 1, q); for (int i = 0; i < q; ++i) printf("%d\n", ans[i]); return 0; }