#include #include using namespace std; const int L = 300005; vector syn[L]; int ans[L]; int q; void dfs(int pre, int akt, int k, int m){ int s = syn[akt].size(); for(int i = 0; i < s; i++) dfs(akt, syn[akt][i], min(k*s, q), m+k*i); //cout << akt << endl; if(!s){ int p = m; while(p <= q){ cout << p << " " << akt << endl; ans[p] = akt; p += k; } } } int main() { ios::sync_with_stdio(false); cin.tie(0); int n; cin >> n >> q; for(int i = 1; i < n; i++){ int a; cin >> a; syn[a].push_back(i); } dfs(0,0,1,0); for(int i = 0; i < q; i++) cout << ans[i] << endl; return 0; }