#include using namespace std; #define FOR(a, b, c) for(int a = b; a < c; a++) const int N = 3e5 + 7; vector graf[N]; int res[N]; int n, q; void dfs(int u, int bred, int x, int y) { if (bred == 0) { return; } // cerr << "U:" << u << " " << bred << " " << x << " " << y << "\n"; if (graf[u].size() == 0) { for (int i = y; i < q; i += x) { res[i] = u; } return; } int temp = bred / graf[u].size(); int temp2 = bred - temp * graf[u].size(); int id = 0; for (auto v : graf[u]) { int b = temp + (temp2 > 0); temp2--; // x, y // graf[u].size(), id // nx, ny int nx = x * graf[u].size(); int ny = id * x + y; id++; dfs(v, b, nx, ny); } } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> q; FOR(i, 1, n) { int p; cin >> p; graf[p].push_back(i); } dfs(0, q, 1, 0); FOR(i, 0, q) { cout << res[i] << "\n"; } }