序列

题目背景

搬运序列

题目描述

有一个序列$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\ $。