758. 切割树

给你一棵含有 $n$ 个结点的树,编号为 $0 \sim n-1$,这 $n$ 个结点都被染成了黑色或白色。

显然,对于一棵树而言,我们每去掉一条边就能把树分成两部分。

现在,要求你把这棵树切开,使得每一个连通块内只有一个白色结点。

问共有多少种切开的方式满足以上条件,如果被删除的边集不同,我们则认为两种方式不同,反之,认为相同。

请输出对 $1000000007$ 取模后的结果。

输入格式

第一行仅包含一个正整数 $n$,表示树的结点数量。

第二行包含 $n-1$ 个数字,第 $i$ 个数字表示第 $i$ 个结点的根,我们认为 $0$ 号结点是整棵树的根,第 $i$ 个数字不超过 $i$,即第 $i$ 个结点的根一定是编号小于 $i$ 的结点。

第三行包含 $n$ 个数字,第 $i$ 个数字表示第 $i-1$ 个结点的颜色,$0$ 表示白色,$1$ 表示黑色。

输出格式

输出一个整数表示对 $1000000007$ 取模后的结果。

数据范围

$1 \le n \le 10^5$

输入样例1:

3
0 0
1 0 0

输出样例1:

2

输入样例2:

10
0 0 1 2 0 5 1 2 3
1 0 0 1 0 0 1 1 0 1

输出样例2:

3