import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int[] directSubordinateCnts = new int[n + 10];
		for (int i = 2; i <= n; ++i) {
			int directBoss = sc.nextInt();
			++directSubordinateCnts[directBoss];
		}

		for (int i = 1; i <= n; ++i) {
			System.out.println(directSubordinateCnts[i]);
		}
	}

} import java.util.Scanner; Scanner java.util public class Main {

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int[] directSubordinateCnts = new int[n + 10];
		for (int i = 2; i <= n; ++i) {
			int directBoss = sc.nextInt();
			++directSubordinateCnts[directBoss];
		}

		for (int i = 1; i <= n; ++i) {
			System.out.println(directSubordinateCnts[i]);
		}
	}

} Main public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int[] directSubordinateCnts = new int[n + 10];
		for (int i = 2; i <= n; ++i) {
			int directBoss = sc.nextInt();
			++directSubordinateCnts[directBoss];
		}

		for (int i = 1; i <= n; ++i) {
			System.out.println(directSubordinateCnts[i]);
		}
	} main {
		// TODO 自動生成されたメソッド・スタブ
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int[] directSubordinateCnts = new int[n + 10];
		for (int i = 2; i <= n; ++i) {
			int directBoss = sc.nextInt();
			++directSubordinateCnts[directBoss];
		}

		for (int i = 1; i <= n; ++i) {
			System.out.println(directSubordinateCnts[i]);
		}
	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int n = sc.nextInt(); n sc.nextInt() sc.nextInt sc int[] directSubordinateCnts = new int[n + 10]; directSubordinateCnts new int[n + 10] n + 10 n 10 for (int i = 2; i <= n; ++i) {
			int directBoss = sc.nextInt();
			++directSubordinateCnts[directBoss];
		} int i = 2; int i = 2; i 2 i <= n i n ++i ++i i {
			int directBoss = sc.nextInt();
			++directSubordinateCnts[directBoss];
		} {
			int directBoss = sc.nextInt();
			++directSubordinateCnts[directBoss];
		} int directBoss = sc.nextInt(); directBoss sc.nextInt() sc.nextInt sc ++directSubordinateCnts[directBoss] directSubordinateCnts[directBoss] directSubordinateCnts directBoss for (int i = 1; i <= n; ++i) {
			System.out.println(directSubordinateCnts[i]);
		} int i = 1; int i = 1; i 1 i <= n i n ++i ++i i {
			System.out.println(directSubordinateCnts[i]);
		} {
			System.out.println(directSubordinateCnts[i]);
		} System.out.println(directSubordinateCnts[i]) System.out.println System.out System System.out directSubordinateCnts[i] directSubordinateCnts i String[] args args public class Main {

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int[] directSubordinateCnts = new int[n + 10];
		for (int i = 2; i <= n; ++i) {
			int directBoss = sc.nextInt();
			++directSubordinateCnts[directBoss];
		}

		for (int i = 1; i <= n; ++i) {
			System.out.println(directSubordinateCnts[i]);
		}
	}

} public class Main {

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int[] directSubordinateCnts = new int[n + 10];
		for (int i = 2; i <= n; ++i) {
			int directBoss = sc.nextInt();
			++directSubordinateCnts[directBoss];
		}

		for (int i = 1; i <= n; ++i) {
			System.out.println(directSubordinateCnts[i]);
		}
	}

} Main
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int[] directSubordinateCnts = new int[n + 10];
		for (int i = 2; i <= n; ++i) {
			int directBoss = sc.nextInt();
			++directSubordinateCnts[directBoss];
		}

		for (int i = 1; i <= n; ++i) {
			System.out.println(directSubordinateCnts[i]);
		}
	}

}
