T^T(born-again)给你n个点的树,编号1~n,顶点1为树的根。每个顶点的父节点是pi,你可以从一个顶点移动到它的任何子顶点。此外,每个顶点被赋予两种字符'T'和'^'中的任意一种,求满足顶点x->顶点y->顶点z,且顶点x和顶点z是'T',顶点y是'^'的(x,y,z)三元组的数量。因为答案过大,请取模1e9+7。
tip:顶点x->顶点y表示可以从顶点x移动到顶点y
尽量输入整个字符串或者用cin依次输入单个字符
第一行一个整数t,表示t组数据
对于每组数据
第一行一个整数n,表示顶点的数量(1≤n≤5e5)
第二行包含n个字符的字符串,对应代表每个顶点的字符(字符只包含'T'和'^')
第三行包含n-1个整数p2,p3,……,pn(1≤pi<i),表示每个非根节点的父节点
所有测试用例的n之和不超过1e6
对于每组数据输出一行一个整数,表示(x,y,z)三元组的数量
2 4 T^^T 1 1 2 7 T^^TT^T 1 1 2 4 3 3
1 3