序列
题目背景
搬运序列
题目描述
有一个序列$a_n$和若干操作。
- $\mathrm{1\ l \ r \ }$ 求$a_l$到$a_r$的和
- $\mathrm{2\ l \ r \ val \ }$ 将$a_l$到$a_r$赋值为$\mathrm{val}$
- $\mathrm{3\ l \ r \ val\ }$将$a_l$到$a_r$加上$\mathrm{val}$
- $\mathrm{4\ l_1 \ r_1 \ l_2 \ r_2 }$将$a_{l_1}$到$a_{r_1}$复制到$a_{l_2}$到$a_{r_2}$处
- $\mathrm{5\ l_1 \ r_1 \ l_2 \ r_2 }$将$a_{l_1}$到$a_{r_1}$与$a_{l_2}$到$a_{r_2}$交换
- $\mathrm{6\ l \ r \ }$将$a_l$到$a_r$翻转
输入输出格式
输入格式
第一行两个数$n$和$m$,为序列长度和操作个数。
第二行$n$个数,为$a_i$。
下面$m$行,每行为操作种类和相应的若干整数。
输出格式
若干行,对于每个$1$操作,输出答案。
由于答案可能过大,对$10^9+7$取模。
最后一行输出序列$a_n$。当然也要取模。
输入输出样例
输入样例 #1
10 10
7 1 3 2 2 4 0 1 2 2
4 10 10 3 3
3 4 10 5
6 6 7
6 9 10
1 10 10
5 9 10 6 7
2 8 10 0
5 4 4 5 5
5 2 4 8 10
3 3 9 0
输出样例 #1
7
7 0 0 0 7 7 7 1 2 7
说明
**请注意常数优化**
若是$\mathrm{copy}$和$\mathrm{swap}$操作,保证$r_1-l_1=r_2-l_2$且区间不重叠。
保证数据随机。
对于$30\%$的数据,保证$\ n,m\le 10^3\ $。
对于$50\%$的数据,保证$\ n,m\le 5\times 10^4\ $。
对于$70\%$的数据,保证$\ n,m\le 1.5\times 10^5\ $。
对于$100\%$的数据,保证$\ n,m\le 3\times 10^5\ ,\ 0\le a_i,\mathrm{val}\lt Mod\ $。