AT_aalc001_h 加算と modulo 演算

Description

長さ $ N $ の非負整数列 $ A=(A_1,A_2,\ldots,A_N) $ が与えられます。 クエリを $ Q $ 個処理してください。クエリは以下の $ 2 $ 種類のいずれかです。 - `1 i x`: $ A_i $ を $ x $ に変更する。 - `2 l r x`:与えられた $ x $ に対し、 $ i=l,l+1,\ldots,r $ の順に以下の操作を行い、最終的な $ x $ の値を出力する。 - $ A_i=0 $ のとき、 $ x $ を $ x \bmod{998244353} $ に変更する。 - $ A_i\gt 0 $ のとき、 $ x $ を $ x+A_i $ に変更する。

Input Format

入力は以下の形式で標準入力から与えられる。 > $ N $ $ Q $ $ A_1 $ $ A_2 $ $ \ldots $ $ A_N $ $ \mathrm{query}_1 $ $ \mathrm{query}_2 $ $ \vdots $ $ \mathrm{query}_Q $ 各クエリは以下のいずれかの形式で与えられる。 > $ 1 $ $ i $ $ x $ > $ 2 $ $ l $ $ r $ $ x $

Output Format

$ 2 $ 種類目のクエリの個数を $ q $ として、 $ q $ 行出力せよ。 $ j $ 行目には、 $ j $ 番目の $ 2 $ 種類目のクエリに対する答えを出力せよ。

Explanation/Hint

### Sample Explanation 1 最初のクエリでは、 $ x $ は $ 998244350,998244358,5,16,21 $ と変化するため、 $ 21 $ を出力します。 $ 2 $ 番目のクエリによって、 $ A=(8,6,11,5) $ となります。 $ 3 $ 番目のクエリでは、 $ x $ は $ 10,16,27,32 $ と変化するため、 $ 32 $ を出力します。 ### Constraints - $ 1\leq N\leq 2\times 10^5 $ - $ 1\leq Q\leq 2\times 10^5 $ - $ 0\leq A_i\leq 10^9 $ - $ 1 $ 種類目のクエリについて、 $ 1\leq i\leq N $ , $ 0\leq x\leq 10^9 $ - $ 2 $ 種類目のクエリについて、 $ 1\leq l\leq r\leq N $ , $ 0\leq x\leq 10^9 $ - 入力される数値はすべて整数