a2+b2=(a+b)2−2ab
你需要维护一个长度为 n 的数组,支持以下四种操作:
第一行两个整数 n,q 。
第二行 n 个正整数 ai,表示初始的数组。
接下来 q 行,每行首先有一个整数 opt
若 opt=1,则接下来有三个整数 l,r,w ,表示将 l 到 r 内的数全部加上 w 。
若 opt=2,则接下来有三个整数 l,r,w,表示将 l 到 r 内的数全部乘上 w。
若 opt=3,则接下来有两个整数 l,r,表示求 l 到 r 内每个数的和。
若 opt=4,则接下来有两个整数 l,r,表示求 l 到 r 内每个数的平方的和。
对于每个类型为 3 或 4 的操作,在一行内输出答案对 998244353 取模的结果。
5 4
1 2 3 4 5
1 1 4 1
2 2 5 2
3 1 5
4 1 5
36
304
对于 10% 的数据:opt=3 或 opt=4
对于另外 20% 的数据:opt=1 或 opt=3,且当 opt=1 时,l=r
对于另外 20% 的数据:opt=1 或 opt=3
对于另外 20% 的数据:opt=2 或 opt=3
对于另外 20% 的数据:opt=1 或 opt=4
对于 100% 的数据: 1≤n≤105, 1≤q≤105, 1≤l≤r≤n ,0≤w , ai<998244353