atcoder#ABC298D. [ABC298D] Writing a Numeral

[ABC298D] Writing a Numeral

配点 : 400400

問題文

文字列 SS があり、初め S=S= 1 です。 以下の形式のクエリが QQ 個与えられるので順に処理してください。

  • 1 x : SS の末尾に数字 xx を追加する
  • 2 : SS の先頭の数字を削除する
  • 3 : SS を十進数表記の数とみなした値を 998244353998244353 で割った余りを出力する

制約

  • 1Q6×1051 \leq Q \leq 6 \times 10^5
  • 11 番目の形式のクエリについて、x{1,2,3,4,5,6,7,8,9}x \in \{1,2,3,4,5,6,7,8,9\}
  • 22 番目の形式のクエリは SS22 文字以上の時にのみ与えられる
  • 33 番目の形式のクエリが 11 個以上存在する

入力

入力は以下の形式で標準入力から与えられる。

QQ

query1\mathrm{query}_1

\vdots

queryQ\mathrm{query}_Q

ただし queryi\mathrm{query}_iii 番目のクエリを表し、以下のいずれかの形式である。

11 xx

22

33

出力

33 番目の形式のクエリの個数を qq として、qq 行出力せよ。ii (1iq)(1 \leq i \leq q) 行目には ii 番目の 33 番目の形式のクエリに対する出力をせよ。

3
3
1 2
3
1
12

11 番目のクエリにおいて、SS1 なので ( 11998244353998244353 で割った余りに等しい) 11 を出力します。 22 番目のクエリにおいて、SS12 になります。 33 番目のクエリにおいて、SS12 なので ( 1212998244353998244353 で割った余りに等しい) 1212 を出力します。

3
1 5
2
3
5
11
1 9
1 9
1 8
1 2
1 4
1 4
1 3
1 5
1 3
2
3
0

出力されるべき値は 998244353998244353 で割った余りであることに注意してください。