#P5350. 序列

序列

题目背景

搬运序列

题目描述

有一个序列 a1na_{1\sim 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 个数,为 a1na_{1\sim n}

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

输出格式

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

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

最后一行输出序列 a1na_{1\sim 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

提示

请注意常数优化。

对于 4455 操作,保证 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,m3×105 \ n,m\le 3\times 10^5\  0ai,val<109+7\ 0\le a_i,\mathrm{val}< 10^9+7