#include using namespace std; #define FOR(i, j, k, l) for(int i = (j); i < (k); i += (l)) #define FORD(i, j, k, l) for(int i =(j); i >= (k); i -= (l)) #define REP(i, n) FOR(i, 0, n, 1) #define REPD(i, n) FORD(i, n, 0, 1) typedef long long ll; const ll INFF = (ll)1e18; const int INF = (int)1e9; int n, q; int pre[312345]; vector graf[312345]; int dir[312345]; int cut[312345]; int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cin >> n >> q; for(int i = 1; i < n; i++) { cut[i] = i; cin >> pre[i]; graf[pre[i]].push_back(i); } for(int i = n-1; i; i--) { if(cut[i] != i) continue; while(pre[i] && graf[pre[i]].size() == 1) { cut[pre[i]] = i; pre[i] = pre[pre[i]]; } } for(int i = 0; i < q; i++) { int v = 0; while(graf[v].size()) { int u = v; v = cut[graf[v][dir[v]]]; dir[u] = (dir[u]+1)%graf[u].size(); } cout << v << endl; } return 0; }