定义fibonacci数列第i项为Fib(i),对于任意的大于等于3的i,有Fib(i)=Fib(i−1)+Fib(i−2),令Fib(1)=Fib(2)=1。
再给出一个有根树T,T一共有n个节点,从1∼n编号,1号节点为根,每个点有一个权值,初始的时候都是0,现在有2种操作:
U X k
更新操作,对于在X的子树中的每一个节点(包括X),如果它到X的距离(即这个点到X的唯一简单路径上经过的边数)为D,那么将它的权值加上Fib(k+D)。
Q X Y
询问操作,询问X到Y的简单路径上的所有点的权值之和(包括X和Y),将所求的权值和lmod109+7之后输出。
【输入】
第1行两个用空格隔开的正整数n,m表示节点个数和操作个数。
第2∼n行,第i行一个数x,表示节点i在树上的父亲是x。
接下来m行,每行一个形如"U X k"或"Q X Y"的操作。