至至子的公司排队
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

至至子开有 n 家公司,第 i 家公司有 c_i 个员工,并且在该公司内形成了 c_i - 1直接上下级的关系(注意到 BOSS 是没有直接上级的)。今天他良心发现想让这 n 家公司的所有员工排队买票旅游。

然而这些人的等级观念很重——他们约定一个人在排队的时候不能排在其直接或间接上级的前面(若 ab 的直接上级或间接上级,bc 的直接/间接上级,则 ac 的间接上级)。

于是至至子很好奇,一共有多少种符合条件的排队方案呢?由于这个数可能很大,所以请输出答案对 取模的结果。

输入描述:

第一行一个正整数 n,表示公司的数量,保证 

接下来的 n 行每行描述一个公司,第一个正整数 c_i 表示第 i 个公司的人数。为了方便,我们将 同一公司 内的员工编号为 ,其中 1 为这个公司的 BOSS,没有直接上级。接下来的 c_i - 1 个正整数,分别描述 号员工的直接上级 f_i。保证 ,并且

输出描述:

一行一个整数,表示答案对  取模的结果。
示例1

输入

复制
1
5 1 1 2 3

输出

复制
6

说明

23 的直接上司是 14 的直接上级是 25 的直接上级是 3145 的间接上级。

6 种合法的排队方案分别为 (1,2,4,3,5)(1,3,5,2,4)(1,2,3,4,5)(1,3,2,4,5)(1,2,3,5,4)(1,3,2,5,4)。可以发现没有别的合法的排队方案。
示例2

输入

复制
5
1
1
1
1
1

输出

复制
120

说明

5 家公司都只有各自的 BOSS,只考虑其排列方案即可,不难发现为 5! = 120 种。
示例3

输入

复制
3
2 1
4 1 2 3
4 1 2 2

输出

复制
6300
示例4

输入

复制
14
2 1
4 4 4 1
3 3 1
3 1 2
6 1 4 6 4 2
7 5 7 7 6 1 6
4 1 2 1
2 1
8 4 4 1 2 2 6 6
8 6 6 7 4 5 1 1
5 4 4 5 1
7 3 6 3 1 5 2
8 3 6 1 7 5 4 5
8 6 6 7 8 7 8 1

输出

复制
430390195

说明

记得输出答案对 10^9 + 7 取模的结果。