#P5138. fibonacci

fibonacci

题目背景

Wolfycz 很喜欢 Fibonacci 数列(雾

题目描述

Wolfycz 热衷于研究 Fibonacci 数列,他定义 FibiFib_i 为Fibonacci 数列的第 ii 项,同时定义 Fib0=0,Fib1=1Fib_0=0,Fib_1=1,并且对于任意的ii,满足 Fibi=Fibi1+Fibi2Fib_i=Fib_{i-1}+Fib_{i-2}

Wolfycz 也喜欢植树,有一天他植了一颗滑稽树(就是 OI 中所说的树,nn 个点,n1n-1 条边,以 11 为根),初始时树上的节点都没有滑稽果,于是 Wolfycz 不惜花重金购入了金坷垃,每次他给滑稽树上的节点 xx 施肥 kk 克,会使 xx 以及它的子树都长出一堆滑稽果,具体来讲,如果 xx 子树中的某个节点距离 xx 的距离为 DD,那么这个节点就会长出 FibD+kFib_{D+k} 个滑稽果

Wolfycz 觉得滑稽树上滑稽果已经够多了,因此他想 Van 游戏,所以他会时不时询问你两个节点路径上有多少个滑稽果。

输入格式

第一行给出两个整数 N,MN,M,表示树的节点个数和操作个数

2N2\sim N 行,第 ii 行两个数 x,yx,y,表示节点 x,yx,y 之间有一条边

接下来 MM 行,每行一个形如 U x kQ x y 的形式

  • U x kxx 的子树内的节点,若其到 xx 的距离为 DD,则该点长出 FibD+kFib_{D+k} 个滑稽果,xx 也要长滑稽果
  • Q x y:询问路径 x,yx,y 上所有节点的滑稽果个数和(包括 x,yx,y),答案对 109+710^9+7 取模

输出格式

对于每个 Q x y 询问,输出其答案。

5 10
2 1
1 3
2 4
5 2
Q 1 5
U 1 1
Q 1 1
Q 1 2
Q 1 3
Q 1 4
Q 1 5
U 2 2
Q 2 3
Q 4 5
0
1
2
2
4
4
4
10

提示

对于30%30\%的数据,N,M,k103N,M,k\leqslant 10^3

对于100%100\%的数据,N,M105N,M\leqslant 10^51x,yN1\leqslant x,y\leqslant N1k10181\leqslant k\leqslant 10^{18}