atcoder#YAHOOPROCON2019QUALF. Pass

Pass

配点 : 900900

問題文

NN 人のすぬけ君が 11 列に並んでいます。 長さ NN の文字列 SS が与えられ、前から ii 人目のすぬけ君は SSii 文字目が 0 のとき赤いボールを 22 つ、1 のとき赤いボールと青いボールを 11 つずつ、2 のとき青いボールを 22 つ持っています。

高橋君は最初、空の列を持っています。以下の操作を 2N2N 回繰り返してできる列としてありうるものの個数を 998244353998244353 で割った あまりを求めてください。

  • ボールを 11 つ以上持っているすぬけ君は全員同時に、自分が持っているボールの中から 11 つを選び、前のすぬけ君に渡す。ただし、先頭のすぬけ君は、高橋君に渡す。
  • 高橋君は、先頭のすぬけ君から受け取ったボールを、列の末尾に並べる。

制約

  • 1S20001 \leq |S| \leq 2000
  • SS0,1,2 からなる

整数 NN は入力では与えられず、文字列 SS の長さとして間接的に与えられることに注意せよ。

入力

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

SS

出力

操作を 2N2N 回繰り返してできる列としてありうるものの個数を 998244353998244353 で割ったあまりを出力せよ。

02
3

前から ii 個目に並んだボールの色が赤のとき r を、青のとき bii 文字目の文字とした長さ 2N2N の文字列で列を表すことにすれば、 rrbb,rbrb,rbbr が条件を満たします。

1210
55
12001021211100201020
543589959