#include <iostream>
#include <vector>
#include <stack>
using namespace std;
int main() {
cin.tie(0);
ios_base::sync_with_stdio(0);
int n;
cin >> n;
vector<vector<int>> sub(n);
for(int i = 1; i < n; i++) {
int boss;
cin >> boss;
sub[boss - 1].push_back(i);
}
stack<int> st;
vector<int> order;
st.push(0);
while(!st.empty()){
auto cur = st.top(); st.pop();
order.push_back(cur);
for(auto &nx: sub[cur]) {
st.push(nx);
}
}
vector<int> ans(n);
for(int i = order.size() - 1; i >= 0; i--) {
int cur = order[i];
for(auto &nx: sub[cur]){
ans[cur] += ans[nx] + 1;
}
}
for(int i = 0; i < n; i++){
cout << ans[i] << ' ';
}
cout << '\n';
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RhY2s+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKCWNpbi50aWUoMCk7Cglpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwoJCglpbnQgbjsKCWNpbiA+PiBuOwoJdmVjdG9yPHZlY3RvcjxpbnQ+PiBzdWIobik7Cglmb3IoaW50IGkgPSAxOyBpIDwgbjsgaSsrKSB7CgkJaW50IGJvc3M7CgkJY2luID4+IGJvc3M7CgkJc3ViW2Jvc3MgLSAxXS5wdXNoX2JhY2soaSk7Cgl9CgkKCXN0YWNrPGludD4gc3Q7Cgl2ZWN0b3I8aW50PiBvcmRlcjsKCXN0LnB1c2goMCk7Cgl3aGlsZSghc3QuZW1wdHkoKSl7CgkJYXV0byBjdXIgPSBzdC50b3AoKTsgc3QucG9wKCk7CgkJb3JkZXIucHVzaF9iYWNrKGN1cik7CgkJZm9yKGF1dG8gJm54OiBzdWJbY3VyXSkgewoJCQlzdC5wdXNoKG54KTsKCQl9Cgl9CgoJdmVjdG9yPGludD4gYW5zKG4pOwoJZm9yKGludCBpID0gb3JkZXIuc2l6ZSgpIC0gMTsgaSA+PSAwOyBpLS0pIHsKCQlpbnQgY3VyID0gb3JkZXJbaV07CgkJZm9yKGF1dG8gJm54OiBzdWJbY3VyXSl7CgkJCWFuc1tjdXJdICs9IGFuc1tueF0gKyAxOwoJCX0KCX0KCglmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKXsKCQljb3V0IDw8IGFuc1tpXSA8PCAnICc7Cgl9Cgljb3V0IDw8ICdcbic7CgoJcmV0dXJuIDA7Cn0=