单点时限: 3.5 sec
内存限制: 256 MB
春天到了,在春雨过后,山上长出了许多春笋,kblack 想知道山上长了多少春笋。
我们认为山上一共有 $n$ 个笋窝,排成了一条直线,从 $1$ 开始连续编号,第 $i$ 和第 $i+1$ 个笋窝间有山路连接 ($1 \leq i \leq n - 1$)。
笋尖的生长速度非常惊人,我们称其为笋尖爆炸,可以用 $x$, $y$, $u$, $v$ 来表示。笋尖爆炸时,从 $x$ 到 $y$ 的简单路径上,依次长出以 $u$ 和 $v$ 为前两项的斐波那契数列中对应项的春笋。例如,第 $1$ 个笋窝会长出 $u$ kg 的春笋,第 $2$ 个笋窝会长出 $v$ kg 的春笋,第 $3$ 个笋窝会长出 $u+v$ kg 的春笋,而第 $4$ 个笋窝会长出 $u+2v$ kg 的春笋,以此类推。
你需要回答关于笋窝的 $m$ 个询问。
第 $1$ 行包含 $2$ 个整数,表示笋窝数 $n$ 和询问数 $m$。($1 \leq n, m \leq 400~000$)
接下来 $m$ 行,每行的第一个整数 $op$ 表示询问的类型。
$1 \leq x, y \leq n$
$1 \leq u, v \leq 10^6$
对于每个 $op=2$ 的询问,输出一行包含询问的结果。
4 4 1 1 4 2 3 2 2 4 1 2 4 4 4 2 4 1
16 34
在春天到来前,我们认为所有笋窝都没有春笋。