atcoder#ARC059D. [ARC059F] バイナリハック

[ARC059F] バイナリハック

Score : 800800 points

Problem Statement

Sig has built his own keyboard. Designed for ultimate simplicity, this keyboard only has 33 keys on it: the 0 key, the 1 key and the backspace key.

To begin with, he is using a plain text editor with this keyboard. This editor always displays one string (possibly empty). Just after the editor is launched, this string is empty. When each key on the keyboard is pressed, the following changes occur to the string:

  • The 0 key: a letter 0 will be inserted to the right of the string.
  • The 1 key: a letter 1 will be inserted to the right of the string.
  • The backspace key: if the string is empty, nothing happens. Otherwise, the rightmost letter of the string is deleted.

Sig has launched the editor, and pressed these keys NN times in total. As a result, the editor displays a string ss. Find the number of such ways to press the keys, modulo 109+710^9 + 7.

Constraints

  • 1N50001 \leq N \leq 5000
  • 1sN1 \leq |s| \leq N
  • ss consists of the letters 0 and 1.

Partial Score

  • 400400 points will be awarded for passing the test set satisfying 1N3001 \leq N \leq 300.

Input

The input is given from Standard Input in the following format:

NN

ss

Output

Print the number of the ways to press the keys NN times in total such that the editor displays the string ss in the end, modulo 109+710^9+7.

3
0
5

We will denote the backspace key by B. The following 55 ways to press the keys will cause the editor to display the string 0 in the end: 00B, 01B, 0B0, 1B0, BB0. In the last way, nothing will happen when the backspace key is pressed.

300
1100100
519054663
5000
01000001011101000100001101101111011001000110010101110010000
500886057