Cosmo 正在玩一款名为《Skyward Wind Mask of Twilight Time》的《塞尔达传说》系列最新游戏。在这款游戏中,玩家必须以年轻冒险家林克的身份完成所有 $n$ 个目标。然而,有些目标必须在其他目标之前完成!每个目标 $i$($i = 2 \dots n$)都有一个前置目标 $P_i$,必须在 $i$ 之前完成。当然,第一个目标(始终为 1)没有前置目标。不存在会导致目标间接依赖于自身的依赖循环。
然而,像所有游戏一样,这款游戏有隐藏的作弊手段。对于每个目标 $i = 2 \dots n$,都有一个作弊手段,允许在完成其前置目标之前完成该目标!但是,事情仍然不能太乱。如果使用了目标 $i$ 的作弊手段,那么目标 $i$ 就不必在它的前置目标 $P_i$ 之后完成,而只需在它前置目标的前置目标 $P_{P_i}$ 之后完成(除非 $P_i = 1$,在这种情况下,由于目标 1 没有前置目标,它可以随时完成)。此外,在彼此太近的情况下使用多个作弊手段可能会导致不可预知的后果,因此每个目标最多只能参与一次作弊。换句话说,如果你对目标 $i$ 使用了作弊手段,以便在完成其前置目标 $P_i$ 之前完成它,那么你就不能对 $P_i$ 使用作弊手段,也不能对任何以 $i$ 为前置目标的目标使用作弊手段。
Cosmo 希望在最多使用 $k$ 个作弊手段的情况下完成游戏。在满足这些约束条件下,他有多少种不同的顺序来完成所有 $n$ 个目标?由于这个数值可能非常大,请输出其对 $10^9+7$ 取模的结果。
输入格式
输入包含多组测试数据。每组测试数据的第一行包含两个整数 $n$ ($1 \le n \le 200$) 和 $k$ ($0 \le k < n$),分别表示 Cosmo 必须完成的目标数量 ($n$) 以及他愿意使用的最大作弊次数 ($k$)。下一行包含 $n-1$ 个以空格分隔的整数 $p$ ($1 \le p \le n$),表示目标 $2, 3, \dots, n$ 的前置目标(跳过 1,因为目标 1 没有前置目标)。输入以包含两个 0 的行结束。
输出格式
对于每组测试数据,输出一个整数,表示 Cosmo 在使用不超过 $k$ 个作弊手段的情况下完成所有 $n$ 个目标的方法数。将此结果对 $10^9+7$ 取模。不要输出任何空格,也不要在答案之间打印空行。
样例
输入格式 1
5 1 1 1 5 1 0 0
输出格式 1
38