线段树打标记2
题目描述
给n个数a1,a2,a3,…,an。
支持q个操作:
1 l r d,令所有的ai(l≤i≤r)加上d。
2 l r d,令所有的ai(l≤i≤r)乘上d。
3 l r d,令所有的ai(l≤i≤r)等于d。
4 l r,查询(∑i=lrai)mod(109+7)。
输入格式
第一行两个整数n,q(1≤n,q≤2×105)。
接下来一行n个整数a1,a2,…,an(1≤ai≤109)。
接下来q行,每行一个形如1 l r d, 2 l r d, 3 l r d或者4 l r的操作,保证1≤l≤r≤n,1≤d≤109。
输出格式
对于每个查询,输出一行,表示答案。
样例输入
5 7
1 2 3 4 5
4 1 5
1 2 3 4
4 1 5
2 3 4 5
4 1 5
3 4 5 1
4 1 5
样例输出
15
23
67
44