#arc059d. [arc059_d]Unhappy Hacking

[arc059_d]Unhappy Hacking

問題文

しぐはキーボードを製作しました。シンプルさを極限まで追求したこのキーボードには、0 キー、1 キー、バックスペースキーの 33 つしかキーがありません。

手始めに、しぐはこのキーボードで簡単なテキストエディタを操作してみることにしました。このエディタには常に一つの文字列が表示されます(文字列が空のこともあります)。エディタを起動した直後では、文字列は空です。キーボードの各キーを押すと、文字列が次のように変化します。

  • 0 キー: 文字列の右端に文字 0 が挿入される。
  • 1 キー: 文字列の右端に文字 1 が挿入される。
  • バックスペースキー: 文字列が空なら、何も起こらない。そうでなければ、文字列の右端の 11 文字が削除される。

しぐはエディタを起動し、これらのキーを合計で NN 回押しました。その結果、いまエディタに文字列 ss が表示されています。このようなキーの押し方の個数を 109+710^9 + 7 で割った余りを求めてください。

制約

  • 1N50001 ≦ N ≦ 5000
  • 1sN1 ≦ |s| ≦ N
  • ss は文字 0, 1 のみからなる。

部分点

  • 1N3001 ≦ N ≦ 300 を満たすデータセットに正解すると、400400 点が与えられる。

入力

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

NN ss

出力

最終的にエディタに文字列 ss が表示されるような NN 回のキーの押し方の個数を 109+710^9+7 で割った余りを出力せよ。


入力例 1

3
0

出力例 1

5

バックスペースキーを B と表記すると、次の 55 通りの押し方で最終的に表示される文字列が 0 となります: 00B, 01B, 0B0, 1B0, BB0。最後の押し方では、バックスペースキーを押すときに何も起こりません。


入力例 2

300
1100100

出力例 2

519054663

入力例 3

5000
01000001011101000100001101101111011001000110010101110010000

出力例 3

500886057