#P5350. 序列

序列

题目背景

搬运序列

题目描述

有一个序列ana_n和若干操作。

  • 1 l r \mathrm{1\ l \ r \ }ala_lara_r的和
  • 2 l r val \mathrm{2\ l \ r \ val \ }ala_lara_r赋值为val\mathrm{val}
  • 3 l r val \mathrm{3\ l \ r \ val\ }ala_lara_r加上val\mathrm{val}
  • 4 l1 r1 l2 r2\mathrm{4\ l_1 \ r_1 \ l_2 \ r_2 }al1a_{l_1}ar1a_{r_1}复制到al2a_{l_2}ar2a_{r_2}
  • 5 l1 r1 l2 r2\mathrm{5\ l_1 \ r_1 \ l_2 \ r_2 }al1a_{l_1}ar1a_{r_1}al2a_{l_2}ar2a_{r_2}交换
  • 6 l r \mathrm{6\ l \ r \ }ala_lara_r翻转

输入格式

第一行两个数nnmm,为序列长度和操作个数。

第二行nn个数,为aia_i

下面mm行,每行为操作种类和相应的若干整数。

输出格式

若干行,对于每个11操作,输出答案。

由于答案可能过大,对109+710^9+7取模。

最后一行输出序列ana_n。当然也要取模。

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
7
7 0 0 0 7 7 7 1 2 7

提示

请注意常数优化

若是copy\mathrm{copy}swap\mathrm{swap}操作,保证r1l1=r2l2r_1-l_1=r_2-l_2且区间不重叠。

保证数据随机。

对于30%30\%的数据,保证 n,m103 \ n,m\le 10^3\

对于50%50\%的数据,保证 n,m5×104 \ n,m\le 5\times 10^4\

对于70%70\%的数据,保证 n,m1.5×105 \ n,m\le 1.5\times 10^5\

对于100%100\%的数据,保证$\ n,m\le 3\times 10^5\ ,\ 0\le a_i,\mathrm{val}\lt Mod\ $。