#L3655. 「2021 集训队互测」染色

「2021 集训队互测」染色

题目描述

你有一个 nnmm 列的网格,每个格子可以被染黑或染白,初始每个格子均为白色。定义第 ii 行的美观程度为最大的 xx,满足对于所有 1jx1 \le j \le x,第 ii 行的第 jj 个格子的颜色是黑色。

你需要对这个网格执行 mm 次操作。操作有以下四种:

  1. 给定三个整数 l,r,xl, r, x,表示把第 xx 列的第 ll 到第 rr 个格子染黑。
  2. 给定三个整数 l,r,xl, r, x,表示把第 xx 列的第 ll 到第 rr 个格子染白。
  3. 给定三个整数 l,r,vl, r, v,你需要把第 ll 到第 rr 行中美观程度最小的行的权值加上 vv,如有多行均为最小则对每行都加 vv
  4. 给定两个整数 l,rl, r,你需要输出第 ll 到第 rr 行的权值之和,对 2642^{64} 取模。

每行初始权值为 00

输入格式

第一行包含两个整数 n,mn, m

接下来 mm 行,每行第一个正整数 opiop_i 表示操作编号。

  • 对于 opi=1op_i = 1opi=2op_i = 2,后面紧跟三个正整数 li,ri,xil_i, r_i, x_i,表示执行上述对应操作。
  • 对于 opi=3op_i = 3,后面紧跟三个整数 li,ri,vil_i, r_i, v_i,表示执行上述对应操作。
  • 对于 opi=4op_i = 4,后面紧跟两个整数 li,ril_i, r_i,表示询问这个区间的权值之和对 2642^{64} 取模的值。

输出格式

若干行,对于每个 opi=4op_i = 4 输出其答案。

样例

输入

3 5
1 2 2 1
3 1 3 1
4 1 1
4 1 2
4 1 3

输出

1
1
2

数据范围与提示

对于 100%100\% 的数据:

  • 1n,m3×1051 \le n, m \le 3 \times 10^5
  • 1lirin1 \le l_i \le r_i \le n
  • 1ximin(m,1.5×105)1 \le x_i \le \min(m, 1.5\times 10^5)
  • 0vi<2640 \le v_i < 2^{64}

本题采用子任务捆绑测试。

  • subtask1\text{subtask1} (1010 pts):保证 1n,m10001 \le n, m \le 1000
  • subtask2\text{subtask2} (1515 pts):保证 xi=1x_i = 1
  • subtask3\text{subtask3} (1515 pts):保证 1xi101 \le x_i \le 10
  • subtask4\text{subtask4} (2020 pts):保证 opi=3op_i = 3opi=4op_i = 4 的操作一定出现在所有 opi=1op_i = 1opi=2op_i = 2 的操作之后。
  • subtask5\text{subtask5} (1010 pts):保证 1n,m400001 \le n, m \le 40000
  • subtask6\text{subtask6} (3030 pts):无特殊性质。