P5350 序列

题目背景

搬运序列

题目描述

有一个序列 $a_{1\sim 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_{1\sim n}$。 下面 $m$ 行,每行为操作种类和相应的若干整数。

输出格式

若干行,对于每个 $1$ 操作,输出答案。 由于答案可能过大,对 $10^9+7$ 取模。 最后一行输出序列 $a_{1\sim n}$。当然也要取模。

说明/提示

**请注意常数优化。** 对于 $4$ 和 $5$ 操作,保证 $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}< 10^9+7 $。