题目描述
给出 n,m 表示有 n 个数,m 次操作,ai 表示序列中第 i 个数。
你需要写一种数据结构,支持两种操作:
1 l r
,表示将所有 i∈[l,r],将 ai←⌊ai⌋。
2 l r
,表示将所有 i∈[l,r],将 ai←ai2。
最后需要输出 ∑i=1nai 表示你维护了这个序列。
输入格式
输入共 m+2 行。
第一行输入两个正整数 n,m,意义如上。
第二行输入 n 个整数 ai,意义如上。
接下来 m 行,每行 3 个正整数,表示一次操作,格式如上。
输出格式
输出一行一个整数表示 ∑i=1nai。
答案对 998244353 取模。
提示
对于 5% 的数据,1≤n,m≤10。
对于另外 5% 的数据,保证一次 1 l r
操作上一步是 2 l r
。
对于另外 5% 的数据,保证只有 1
操作。
对于另外 5% 的数据,保证只有 2
操作。
对于另外 5% 的数据,保证所有的 l=1,r=n。
对于另外 5% 的数据,1≤n,m≤103。
对于 100% 的数据,1≤ai≤109,1≤n,m≤2×105。
我们对于测试点 7 至 20 采用捆绑测试。
样例 2 解释
时刻 |
序列 |
0 |
[1,2,3,4] |
1 |
[1,1,1,2] |
2 |
[1,1,1,4] |