『STA - R3』高维立方体
题目描述
如下定义斐波那契数列:
$$\operatorname{fib}(n)=\begin{cases}1&n\le 2\\\operatorname{fib}(n-1)+\operatorname{fib}(n-2)&n>2\end{cases}$$
现在我们定义一个函数(注意在 $n<1$ 时这个函数的值是 $0$):
$$f(n)=\sum_{i=1}^n\operatorname{fib}^2(i)$$
由于求斐波那契数列的前缀和太简单了,你需要求出:
$$\sum_{i=1}^n\operatorname{fib}(i)\cdot(f(i-2)+\operatorname{fib}^2(i)+\operatorname{fib}(i))$$
的值,答案对输入的 $p$ 取模。
注:$\operatorname{fib}^2(x)$ 表示 $\operatorname{fib}(x)$ 的平方。
输入输出格式
输入格式
**本题有多组数据**。
第一行一个整数 $T$,表示数据的组数。
对于每组数据,一行两个整数 $n,p$。
输出格式
对于每组数据,输出一行一个整数,表示答案对 $p$ 取模后的结果。
输入输出样例
输入样例 #1
3
2 100
3 100
4 100
输出样例 #1
4
18
60
说明
样例解释:
对于第一组数据,$1\times(0+1^2+1)+1\times(0+1^2+1)=4$。
对于第二组数据,$1\times(0+1^2+1)+1\times(0+1^2+1)+2\times(1+2^2+2)=18$。
### 数据范围
**本题采用捆绑测试。**
- Subtask 1(5 points):$n \le 10^7$,$p=10^9+7$。
- Subtask 2(20 points):$T\le 10^4$,$n \le 10^8$,$p=10^9+7$。
- Subtask 3(5 points):$p=2$。
- Subtask 4(15 points):$p\le 5$。
- Subtask 5(30 points):$T\le 10^4$,$n \le 10^8$。
- Subtask 6(25 points):无特殊限制。
对于所有数据,$1\le T\le 2\times 10^5$,$1\le n\le 10^{18}$,$2\le p\le 10^9+7$。