#920. Transformation

Transformation

题目背景

原题链接:HDU4578.

题目描述

现有 nn 个正整数 a1,a2,,ana_1, a_2, \cdots, a_n,初始值均为 00

要对它们做 mm 次操作,每次操作可以分为以下四种:

  1. axa_xaya_y 的所有整数加上 cc
    • 形式化地,对于每个整数 k[x,y]k \in [x,y],执行操作 akak+ca_k \leftarrow a_k+c
  2. axa_xaya_y 的所有整数乘上 cc
    • 形式化地,对于每个整数 k[x,y]k \in [x,y],执行操作 akak×ca_k \leftarrow a_k \times c
  3. axa_xaya_y 的所有整数都改为 cc
    • 形式化地,对于每个整数 k[x,y]k \in [x,y],执行操作 akca_k \leftarrow c
  4. 询问从 axa_xaya_y 的所有整数的 pp 次方和,并1000710007 取模;其中 pp 满足 1p31\le p \le 3
    • 形式化地,求出 $[(a_x)^p + (a_{x+1})^p + \cdots + (a_y)^p] \mod 10007$ 的值。

请你实现一种高效的数据结构支持以上操作。

输入格式

输入的第一行包含两个正整数 n,mn,m 分别表示被操作数的个数、操作次数。

接下来 mm 行,每行表示一次操作,格式如下:

  • 1 x y c,表示上述操作 11,即区间 [x,y][x,y] 都加上 cc
  • 2 x y c,表示上述操作 22,即区间 [x,y][x,y] 都乘上 cc
  • 3 x y c,表示上述操作 33,即区间 [x,y][x,y] 都赋值为 cc
  • 4 x y p,表示上述操作 44,求出区间 [x,y][x,y] 所有数的 pp 次方和对 1000710007 取模的值。

输出格式

对于每个操作 44 均输出一行,表示询问的答案。注意对 1000710007 取模。

5 5
3 3 5 7
1 2 4 4
4 1 5 2
2 2 5 8
4 3 5 3
307
7489

数据范围

对于 100%100\% 的数据,1n,m1×1051 \le n,m \le 1 \times 10^51xyn1 \le x \le y \le n1c100001 \le c \le 100001p31 \le p \le 3

注意事项:对于查询操作修改操作20%20\% 的数据不随机