#include<bits/stdc++.h>
using namespace std;
int n;
int head[200005];
struct relationship{
int to;
int last;
};
int dp[200005];
int num[200005];
relationship work[200005];
int find(int x){
if(dp[x]!=0) return dp[x];
if(head[x]==0){
num[x]=1;
return dp[x]=1;
}
else{
int h=0;
for(int i=head[x];i!=0;i=work[i].last){
h+=find(work[i].to);
num[x]+=num[work[i].to];
}
num[x]++;
h+=num[x];
return dp[x]=h;
}
}
int main(){
scanf("%d",&n);
for(int i=2;i<=n;i++){
int x;
scanf("%d",&x);
work[i].last=head[x];
head[x]=i;
work[i].to=i;
}
for(int i=1;i<=n;i++){
printf("%d ",find(i));
}
return 0;
}