U500120 数据结构

题目描述

请维护一个数组,初始全为 $0$,需要支持以下几个操作: 1. `1 l r x`:给区间 $[x, y]$ 加上 $x$; 2. `2 l r x`:给区间 $[x, y]$ 中的每个数对 $x$ 取模; 3. `3 l r`:求区间 $[x, y]$ 的和。

输入格式

第一行,两个整数 $n$ 和 $m$,分别表示数组长度和操作次数。 接下来 $m$ 行,每行三到四个整数,具体看题目描述。

输出格式

输出若干行,第 $i$ 行表示第 $i$ 次询问操作 $3$ 的答案。

说明/提示

对于 $10\%$ 的数据:$1\le n,m\le5\times10^3$; 对于 $100\%$ 的数据:$1\le n,m\le10^5$,$1\le x\le10^9$。 **保证数据随机生成**,**保证数列中的所有数每时每刻都不超过 $\texttt{long long}$ 类型**。