AT_tupc2023_o 0100 Insertion
Description
文字列 $ T $ が **良い文字列** であるとは、空文字列からはじめて以下の操作の繰り返しで $ T $ が得られることをいいます。
- $ T $ の任意の位置に `0100` を挿入する。
長さ $ N $ の `0`,`1`,`?` からなる文字列 $ S $ が与えられます。 それぞれの `?` を `0`,`1` のどちらかに置き換えることで得られる良い文字列の個数を $ 998244353 $ で割った余りを求めてください。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ S $
Output Format
答えを出力せよ。
Explanation/Hint
### Sample Explanation 1
$ S $ の `?` を書き換えて作れる文字列のうち、 `00100100` と `01000100` の $ 2 $ つが良い文字列です。
### Constraints
- $ 4 \leq N \leq 500 $
- $ N $ は $ 4 $ の倍数
- $ S $ は長さ $ N $ の `0`,`1`,`?` からなる文字列