发工资咯
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

一个公司有n个人,每个月都要给这n个人发工资,刚开始每个人的工资都为0,每月底公司会进行两种操作。

1.挑一段连续的区间给区间内的人涨工资

2.询问某个区间内的人迄今为止已经发了多少工资。

请你回答每个操作2

输入描述:

第一行输入n,q

1\leq n\leq 2*10^5,1 \leq q \leq 2*10^5

接下来q行输入操作

分别是

0 l r w

表示l到r区间内的人本月涨了w元工资

1 l r

询问l, r内的人迄今为止发了多少钱

数据保证1 \leq l \leq r \leq n,1\leq w\leq 10^9

输出描述:

每次询问发钱过后

输出一个整数,表示区间发过多少工资,并且取模998244353。
示例1

输入

复制
3 2
0 1 3 1000000000
1 1 3

输出

复制
10533882