#include #include using namespace std; struct Node { size_t index = 0; vector children; void inc(){ ++index; if(index>=children.size()) index =0; } }; Node * nodes; void throwBread(int i){ if(nodes[i].children.empty()) cout << i << endl; else throwBread(nodes[i].children[nodes[i].index]); nodes[i].inc(); } int main(int argc, char const *argv[]) { int n, b, p; cin >> n >> b ; nodes = new Node[n]; for (int i = 1; i < n; i++) { cin >> p; nodes[p].children.push_back(i); } for (int i = 0; i < b; i++) { throwBread(0); } return 0; }