#include #include using namespace std; struct Node { size_t currSucc; size_t pred; vector successors; Node () = default; }; Node* nodes; size_t rec (size_t index) { if (nodes[index].successors.empty()) { return index; } size_t res = rec (nodes[index].successors[nodes[index].currSucc]); nodes[index].currSucc++; if (nodes[index].currSucc >= nodes[index].successors.size()) { nodes[index].currSucc = 0; } return res; } int main() { size_t nodeCount, breadCount; cin >> nodeCount >> breadCount; nodes = new Node [nodeCount] (); for (size_t i = 1; i < nodeCount; i++) { cin >> nodes[i].pred; nodes[nodes[i].pred].successors.push_back (i); } for (size_t i = 0; i < breadCount; i++) { cout << rec (0) << endl; } return 0; }