#arc086c. [arc086_c]Smuggling Marbles

[arc086_c]Smuggling Marbles

题目描述

Snuke有一棵包含N+1N+1个顶点的根树。顶点从00NN编号,顶点00是树的根。顶点ii (1iN)(1 \leq i \leq N)的父节点是顶点pip_i

除了这棵树,Snuke还有一个初始为空的盒子和很多个弹珠,并且在玩弹珠游戏。游戏开始时,在一些顶点上放置一个弹珠,然后按照以下步骤进行:

  1. 如果顶点00上有一个弹珠,把弹珠移到盒子里。
  2. 把每个顶点上的弹珠都移动到它的父节点上(一次性移动)。
  3. 对于每个被两个或更多个弹珠占据的顶点,将所有弹珠从顶点上移走。
  4. 如果存在一个顶点上有一些弹珠,回到步骤1。否则,结束游戏。

2N+12^{N+1}种方式在一些顶点上放置弹珠。对于其中的每一种方式,求出游戏结束时盒子中的弹珠数量,并计算所有这些数字的和对1,000,000,0071,000,000,007取模的结果。

约束条件

  • 1N<2×1051 \leq N < 2 \times 10^{5}
  • 0pi<i0 \leq p_i < i

输入

输入从标准输入读取,格式如下:

NN p1p_1 p2p_2 ...... pNp_{N}

输出

输出答案。

示例输入1

2
0 0

示例输出1

8

当我们在顶点1122上放置一个弹珠时,根据步骤2,顶点00上会有多个弹珠。在这种情况下,这些弹珠将被移走而不是移到盒子中。

示例输入2

5
0 1 1 0 4

示例输出2

96

示例输入3

31
0 1 0 2 4 0 4 1 6 4 3 9 7 3 7 2 15 6 12 10 12 16 5 3 20 1 25 20 23 24 23

示例输出3

730395550

请务必对和进行1,000,000,0071,000,000,007取模运算。