import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int N = sc.nextInt();
		int A[] = new int[N+1];
		int answer[] = new int[N+1];
        //社員番号xの社員の直属の部下はA[i]=xを満たす。
        //つまり、各数がAに何度登場するかを求めればよい
		for(int i=2; i<=N; i++) {
			A[i] = sc.nextInt();
		}
		for(int i=2; i<=N;i++) {
			answer[A[i]]++;
		}
		for(int i=1; i<=N; i++) {
			System.out.println(answer[i]);
		}
	}		
} import java.util.Scanner; Scanner java.util public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int N = sc.nextInt();
		int A[] = new int[N+1];
		int answer[] = new int[N+1];
        //社員番号xの社員の直属の部下はA[i]=xを満たす。
        //つまり、各数がAに何度登場するかを求めればよい
		for(int i=2; i<=N; i++) {
			A[i] = sc.nextInt();
		}
		for(int i=2; i<=N;i++) {
			answer[A[i]]++;
		}
		for(int i=1; i<=N; i++) {
			System.out.println(answer[i]);
		}
	}		
} Main public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int N = sc.nextInt();
		int A[] = new int[N+1];
		int answer[] = new int[N+1];
        //社員番号xの社員の直属の部下はA[i]=xを満たす。
        //つまり、各数がAに何度登場するかを求めればよい
		for(int i=2; i<=N; i++) {
			A[i] = sc.nextInt();
		}
		for(int i=2; i<=N;i++) {
			answer[A[i]]++;
		}
		for(int i=1; i<=N; i++) {
			System.out.println(answer[i]);
		}
	} main {
		Scanner sc = new Scanner(System.in);
		
		int N = sc.nextInt();
		int A[] = new int[N+1];
		int answer[] = new int[N+1];
        //社員番号xの社員の直属の部下はA[i]=xを満たす。
        //つまり、各数がAに何度登場するかを求めればよい
		for(int i=2; i<=N; i++) {
			A[i] = sc.nextInt();
		}
		for(int i=2; i<=N;i++) {
			answer[A[i]]++;
		}
		for(int i=1; i<=N; i++) {
			System.out.println(answer[i]);
		}
	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int N = sc.nextInt(); N sc.nextInt() sc.nextInt sc int A[] = new int[N+1]; A new int[N+1] N+1 N 1 int answer[] = new int[N+1]; answer new int[N+1] N+1 N 1 for(int i=2; i<=N; i++) {
			A[i] = sc.nextInt();
		} int i=2; int i=2; i 2 i<=N i N i++ i++ i {
			A[i] = sc.nextInt();
		} {
			A[i] = sc.nextInt();
		} A[i] = sc.nextInt() A[i] A i sc.nextInt() sc.nextInt sc for(int i=2; i<=N;i++) {
			answer[A[i]]++;
		} int i=2; int i=2; i 2 i<=N i N i++ i++ i {
			answer[A[i]]++;
		} {
			answer[A[i]]++;
		} answer[A[i]]++ answer[A[i]] answer A[i] A i for(int i=1; i<=N; i++) {
			System.out.println(answer[i]);
		} int i=1; int i=1; i 1 i<=N i N i++ i++ i {
			System.out.println(answer[i]);
		} {
			System.out.println(answer[i]);
		} System.out.println(answer[i]) System.out.println System.out System System.out answer[i] answer i String[] args args public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int N = sc.nextInt();
		int A[] = new int[N+1];
		int answer[] = new int[N+1];
        //社員番号xの社員の直属の部下はA[i]=xを満たす。
        //つまり、各数がAに何度登場するかを求めればよい
		for(int i=2; i<=N; i++) {
			A[i] = sc.nextInt();
		}
		for(int i=2; i<=N;i++) {
			answer[A[i]]++;
		}
		for(int i=1; i<=N; i++) {
			System.out.println(answer[i]);
		}
	}		
} public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int N = sc.nextInt();
		int A[] = new int[N+1];
		int answer[] = new int[N+1];
        //社員番号xの社員の直属の部下はA[i]=xを満たす。
        //つまり、各数がAに何度登場するかを求めればよい
		for(int i=2; i<=N; i++) {
			A[i] = sc.nextInt();
		}
		for(int i=2; i<=N;i++) {
			answer[A[i]]++;
		}
		for(int i=1; i<=N; i++) {
			System.out.println(answer[i]);
		}
	}		
} Main
import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int N = sc.nextInt();
		int A[] = new int[N+1];
		int answer[] = new int[N+1];
        //社員番号xの社員の直属の部下はA[i]=xを満たす。
        //つまり、各数がAに何度登場するかを求めればよい
		for(int i=2; i<=N; i++) {
			A[i] = sc.nextInt();
		}
		for(int i=2; i<=N;i++) {
			answer[A[i]]++;
		}
		for(int i=1; i<=N; i++) {
			System.out.println(answer[i]);
		}
	}		
}