AT_kupc2019_d Maximin Game

Description

[problemUrl]: https://atcoder.jp/contests/kupc2019/tasks/kupc2019_d $ 2N $ 枚のカードがあります。 $ i~(1\ \leq\ i\ \leq\ 2N) $ 番目のカードには、整数 $ i $ が書かれています。 千咲さんと月乃瀬さんは、これらのカードを使って次のようなゲームをすることにしました。 1. カードをよくシャッフルし、$ N $ 枚ずつ取ってお互いの最初の手札とする。 2. ゲームは $ N $ ラウンドからなる。各ラウンドでは、$ 2 $ 人のプレイヤーは手札の中で最も小さい数が書かれたカードを選び、見せ合う。見せたカードに書かれた数の大きいほうが、そのラウンドの勝者になる。見せたカードはお互いに手札から取り除き、それ以降のラウンドでは考慮しない。 千咲さんと月乃瀬さんは、このゲームを $ 1 $ 回プレイしました。 ゲームの結果が `0` と `1` のみからなる長さ $ N $ の文字列 $ S $ として与えられます。 任意の整数 $ i\ (1\ \leq\ i\ \leq\ N) $ について、$ S_i $ が `1` のとき、 千咲さんがゲームの $ i $ 回目のラウンドの勝者になったことを、$ S_i $ が `0` のとき、そうでないことを意味します。 このようなゲームの結果を与える千咲さんの最初の手札として、ありえるものは何種類あるでしょうか? 答えはとても大きくなることがあるため、$ 998244353 $ で割った余りを出力してください。

Input Format

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

Output Format

千咲さんの最初の手札として、ありえるものの種類数を $ 998244353 $ で割った余りを出力せよ。

Explanation/Hint

### 制約 - $ 1\ \leq\ N\ \leq\ 10^5 $ - $ S $ は `0` と `1` のみからなる長さ $ N $ の文字列である。 ### Sample Explanation 1 千咲さんの最初の手札に $ 1 $ と $ 4 $ が、月乃瀬さんの最初の手札に $ 2 $ と $ 3 $ が書かれたカードがある場合を考えます。このとき、 - $ 1 $ 回目のラウンドでは、千咲さんは $ 1 $ が書かれたカードを、月乃瀬さんは $ 2 $ が書かれたカードをお互いに見せ、月乃瀬さんがラウンドの勝者になります。 - $ 2 $ 回目のラウンドでは、千咲さんは $ 4 $ が書かれたカードを、月乃瀬さんは $ 3 $ が書かれたカードをお互いに見せ、千咲さんがラウンドの勝者になります。 よって、千咲さんのこの最初の手札は、与えられたゲーム結果を満たします。