#cf17exhibitiona. [cf17_exhibition_a]Awkward

[cf17_exhibition_a]Awkward

问题描述

ButCoder Inc. 是一家创业公司,主要经营编程竞赛网站 "ButCoder" 的开发和运营。

公司有 NN 名成员,包括总裁在内,除总裁外的每个成员都有一个直接上司。每个成员都有一个独特的 ID 号码,范围从 11NN,第 ii 名成员被称为成员 ii。总裁是成员 11,成员 ii (2iN)(2 ≤ i ≤ N) 的直接上司是成员 bib_i (1bi<i)(1 ≤ b_i < i)

所有 ButCoder 的成员都聚集在总部的大厅里拍集体照。大厅非常宽敞,所有 NN 个人都可以站在一条线上。然而,他们无法决定他们站的顺序。由于某种原因,除了总裁之外的所有人都不想站在他们的直接上司旁边。

满足他们愿望的站位方式有多少种?计算结果对 109+710^9+7 取模。

约束条件

  • 2N20002 ≤ N ≤ 2000
  • 1bi<i1 ≤ b_i < i (2iN)(2 ≤ i ≤ N)

输入

输入以以下格式从标准输入给出:

NN

b2b_2

b3b_3

::

bNb_N

输出

打印成员 NN 的站位方式数量,满足不包括总裁在内的任何成员旁边都没有他/她的直接上司,求模 109+710^9+7


输入示例1

4
1
2
3

输出示例1

2

以下,我们将写作 ABA → B 表示成员 AA 是成员 BB 的直接上司。

在这种情况下,成员的层次结构是 12341 → 2 → 3 → 4。有两种满足他们愿望的站位方式:

  • 2,4,1,32, 4, 1, 3
  • 3,1,4,23, 1, 4, 2

注意,后者是前者的逆序,但我们单独计数。


输入示例2

3
1
2

输出示例2

0

成员的层次结构是 1231 → 2 → 3。无论他们以什么顺序站立,至少对成员 2233 中的一个的愿望都无法满足,因此答案是 00


输入示例3

5
1
1
3
3

输出示例3

8

成员的层次结构如下所示:

有八种满足他们愿望的站位方式:

  • 1,4,5,2,31, 4, 5, 2, 3
  • 1,5,4,2,31, 5, 4, 2, 3
  • 3,2,4,1,53, 2, 4, 1, 5
  • 3,2,4,5,13, 2, 4, 5, 1
  • 3,2,5,1,43, 2, 5, 1, 4
  • 3,2,5,4,13, 2, 5, 4, 1
  • 4,1,5,2,34, 1, 5, 2, 3
  • 5,1,4,2,35, 1, 4, 2, 3

输入示例4

15
1
2
3
1
4
2
7
1
8
2
8
1
8
2

输出示例4

97193524