AT_abc434_g [ABC434G] Keyboard

Description

`1`, `2`, $ \dots $ , `9` および `B` からなる文字列 $ A $ に対して $ f(A) $ を次の手順で得られる文字列として定義します。 - はじめ、空文字列 $ C $ がある。 - $ i = 1, 2, \dots, |A| $ の順に以下の操作を行う。 - $ A_i $ が `1`, `2`, $ \dots $ , `9` のいずれかである場合、 $ C $ の末尾に $ A_i $ を追加する。 - $ A_i = $ `B` である場合、 $ C $ の末尾の文字を削除する。ただし $ C $ が空文字列である場合は何もしない。 - 上記の操作を全て終了した時点での $ C $ を $ f(A) $ とする。 `1`, `2`, $ \dots $ , `9` および `B` からなる長さ $ N $ の文字列 $ S $ が与えられます。 以下で説明される $ Q $ 個のクエリを処理してください。クエリは次の $ 2 $ 種類のいずれかです。 - $ 1\ \ x\ \ c $ : $ S_x $ を $ c $ に更新する。(ここで $ c $ は `1`, `2`, $ \dots $ , `9` または `B`) - $ 2\ \ l\ \ r $ : $ S $ の $ l $ 文字目から $ r $ 文字目までを取り出してできる文字列を $ T $ とする。そして $ U=f(T) $ とする。 $ U $ が空文字列の場合は $ -1 $ を、そうでない場合は $ U $ を $ 10 $ 進整数とみなした時の値を $ 998244353 $ で割った余りを出力せよ。

Input Format

入力は以下の形式で標準入力から与えられる。ここで $ \mathrm{query}_i $ は $ i $ 番目のクエリを意味する。 > $ N $ $ Q $ $ S $ $ \mathrm{query}_1 $ $ \mathrm{query}_2 $ $ \vdots $ $ \mathrm{query}_Q $ クエリは以下の $ 2 $ 種類のいずれかの形式で与えられる。 > $ 1 $ $ x $ $ c $ > $ 2 $ $ l $ $ r $

Output Format

問題文の指示に従ってクエリへの答えを改行区切りで出力せよ。

Explanation/Hint

### Sample Explanation 1 $ 1 $ 番目のクエリについて、 $ T=U= $ `567` となります。よって $ 567 $ を出力します。 $ 3 $ 番目のクエリについて、 $ T=U= $ `1234567891` となります。よって $ 1234567891 \bmod 998244353 = 236323538 $ を出力します。 $ 6 $ 番目のクエリについて、 $ T= $ `2BB` で $ U $ は空文字列となります。よって $ -1 $ を出力します。 ### Constraints - $ 1 \leq N \leq 8 \times 10^6 $ - $ 1 \leq Q \leq 2 \times 10^5 $ - $ S $ は `1`, `2`, $ \dots $ , `9` および `B` からなる長さ $ N $ の文字列 - $ 1 \leq x \leq N $ - $ c $ は `1`, `2`, $ \dots $ , `9` または `B` - $ 1 \leq l \leq r \leq N $ - $ N, Q, x, l, r $ は整数