题目描述
在本题中,我们用 fi 来表示第 i 个斐波那契数(f1=f2=1,fi=fi−1+fi−2(i≥3))。
给定一个长度为 n 的序列 a。有 m 次操作,操作有两种:
- 将 al∼ar 加上 x。
- 求 (∑i=lrfai)mod(109+7)。
输入描述
第一行两个正整数 n 和 m(1≤n,m≤105)。
第二行 n 个正整数 ai(1≤ai≤109)。
接下来 m 行,每行包含下面两种形式中的一种,含义如题面所述:
1 l r x,1≤l≤r≤n,1≤x≤109;
2 l r,1≤l≤r≤n。
输出描述
对于每个查询,输出答案。
示例
输入
5 4
1 1 2 1 1
2 1 5
1 2 4 2
2 2 4
2 1 5
输出
5
7
9
说明
- 最初,数组 a 为 1,1,2,1,1。
- 第一个询问的答案为:$f(1) + f(1) + f(2) + f(1) + f(1) = 1 + 1 + 1 + 1 + 1 = 5$。
- 在第二次操作后,数组 a 变成 1,3,4,3,1。
- 第三个询问的答案为:f(3)+f(4)+f(3)=2+3+2=7。
- 第四个询问的答案为:$f(1) + f(3) + f(4) + f(3) + f(1) = 1 + 2 + 3 + 2 + 1 = 9$。