小红的树上赋值方案
题号:NC266117
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

小红拿到了一棵有根树,其中有一些节点被染成了红色。树的根节点是 1 号节点。
小红希望你给每个节点的权值赋值为 1 或者 2,需要满足每个红色节点的子树节点权值之和为 3 的倍数。
请你帮小红求出赋值的合法方案数。由于答案可能过大,请对10^9+7取模。

输入描述:

第一行输入一个正整数n,代表节点的数量。
第二行输入一个长度为n的字符串,第i个字符为'R'代表i号节点被染成红色,为'W'代表未被染色。
第三行输入n-1个正整数a_i,第i个正整数代表i+1号节点的父亲编号。
1\leq n \leq 10^5

输出描述:

一个整数,代表赋值的方案数模10^9+7的值。
示例1

输入

复制
3
RWW
1 1

输出

复制
2

说明

有 111 和 222 两种方案
示例2

输入

复制
3
RRR
1 1

输出

复制
0

说明