#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;
}