#!/usr/bin/env python3
n = int(input())
M = 10**9 + 7
g = [[] for _ in range(n)]
for i in range(1, n):
    p = int(input())
    g[i].append(p)
    g[p].append(i)


def merge(cs, ds):
    l = [0] * (len(cs) + len(ds) - 1)
    for i in range(len(cs)):
        for j in range(len(ds)):
            l[i + j] += cs[i] * ds[j]
    return l


ans = [0] * (n + 1)


def dfs(u, p):
    cs = [0, 1]
    for v in g[u]:
        if v != p:
            vs = dfs(v, u)
            assert vs[0] == 0
            vs[0] = 1
            cs = merge(cs, vs)
    for i in range(len(cs)):
        ans[i] += cs[i]
    return cs


dfs(0, -1)
for x in ans[1:]:
    print(x % M)
