問題文
長さ N の整数列 A=(A1,A2,…,AN) が与えられます。Q 個のクエリを順に処理してください。
i 番目のクエリでは、まず整数 Ti が与えられます。ここで、 Ti は 1 か 2 のどちらかです。
次に、Ti の値に応じてクエリの内容を表す入力が与えられるので、以下のように処理してください。
- Ti=1 のとき
整数 x,y が与えられるので、 Ax を y に変更してください。
- Ti=2 のとき
整数 l,r が与えられるので、 ∑i=lr−1∑j=i+1r(Ai×Aj) を 998244353 で割った余りを出力してください。
制約
- 2≤N≤200000
- 1≤Q≤200000
- 0≤Ai≤998244352
- Ti=1 または Ti=2
- 1≤x≤N
- 0≤y≤998244352
- 1≤l<r≤N
- 入力は全て整数
入力
入力は以下の形式で標準入力から与えられます。
3 行目から Q+2 行目の Queryi は以下のいずれかです。
出力
Ti=2 の各クエリについて、改行区切りで答えを出力してください。
入力例1
6 4
4 1 8 2 6 9
2 2 4
2 4 6
1 6 0
2 4 6
出力例1
1 番目のクエリは ∑i=23∑j=i+14(Ai×Aj) を出力せよというものです。(1×8)+(1×2)+(8×2)=8+2+16=26 なので、26 と出力します。
2 番目のクエリは ∑i=45∑j=i+16(Ai×Aj) を出力せよというものです。(2×6)+(2×9)+(6×9)=12+18+54=84 なので、84 と出力します。
3 番目のクエリは A6 を 0 に変更せよというものです。 A=(4,1,8,2,6,0) となります。
4 番目のクエリは ∑i=45∑j=i+16(Ai×Aj) を出力せよというものです。(2×6)+(2×0)+(6×0)=12+0+0=12 なので、12 と出力します。
入力例2
2 1
998244352 998244352
2 1 2
出力例2
998244352×998244352=996491786299899904 ですが、 998244353 で割った余りを出力する必要があることに注意してください。