U575163 「菈菈」的斐波那契树
题目背景
「菈菈」在「戴比路克星球」上种了一棵奇怪的树。
这棵树上长出了一些问题。
可是「菈菈」不会计算,只好向「梨斗」求助了。
「梨斗」见多识广,一眼就看出来了这是[水题](https://www.luogu.com.cn/problem/P5138)于是把它加强了并重新丢给「菈菈」。
「菈菈」:qwq
题目描述
定义 $fibonacci$ 数列第 $i$ 项为 $fib(i)$,对于任意 $3\le i$,有 $fib(i)=fib(i−1)+fib(i−2)$,令 $fib(1)=fib(2)=1$。
再给出一个有根树 $T$,$T$ 一共有 $n$ 个节点,从 $1\sim n$ 编号,$1$ 号节点为根,每个点有一个权值,初始的时候都是 $0$,现在有 $2$ 种操作:
- $0$ $x$ $k$
更新操作,对于在 $x$ 的子树中的每一个节点(包括 $x$),如果它到 $x$ 的距离(即这个点到 $x$ 的唯一简单路径上经过的边数)为 $d$,那么将它的权值加上 $fib(k+d)$。
- $1$ $x$ $y$
询问操作,询问 $x$ 到 $y$ 的简单路径上的所有点的权值之和(包括 $x$ 和 $y$),将所求的权值和对 $1000000007$ 之后输出。
输入格式
一行 $2$ 个整数 $n,m$。
一行 $n-1$ 个整数表示 $2\sim n$ 的父亲节点。
$m$ 行操作,按照题目描述。
输出格式
对于每一个查询操作输出结果。
说明/提示
共 $10$ 个测试点
对于 $100\%$ 的数据,$1\le n,m\le 1.5\times 10^6$,$1\le k\le 10^{15}$
- 对于 $1$ 号测试点,满足 $1\le n,m,k\le 10^3$
- 对于 $2$ 号测试点,满足 $k=dep[x]$
- 对于 $3,4$ 号测试点,满足 $1\le n,m\le 10^3$
- 对于 $5,6$ 号测试点,满足 $1\le n,m\le 10^5$
- 对于 $7,8$ 号测试点,满足 $1\le n,m\le 3\times 10^5$
- 对于 $9,10$ 号测试点,满足 $1\le n,m\le 1.5\times 10^6$
快读:
```cpp
#define getc (cs==ct&&(ct=(cs=cb)+fread(cb,1,1