#!/usr/bin/env python3
n = int(input())
M = 10**9 + 7
xs = [[0, 1] for _ in range(n)]
ps = [-1] + [int(input()) for _ in range(n - 1)]


def merge(xs, ys):
    l = [0] * (len(xs) + len(ys) - 1)
    for i in range(len(xs)):
        for j in range(len(ys)):
            l[i + j] += xs[i] * ys[j]
            l[i + j] %= M
    return l


# Bottom up merging
for i in range(n - 1, 0, -1):
    xs[i][0] = 1
    xs[ps[i]] = merge(xs[ps[i]], xs[i])

# Accumulate
for i in range(1, n):
    for j in range(len(xs[i])):
        xs[0][j] += xs[i][j]

for x in xs[0][1:]:
    print(x % M)
