#agc048f. [agc048_f]01 Record

[agc048_f]01 Record

問題文

すぬけくんは大きな黒板をもらいました. これに喜んだすぬけくんは,まず,黒板にいくつかの正整数を書きました. 次にすぬけくんは,黒板に書かれている整数がなくなるまで,以下の操作を繰り返し行いました.

  • 黒板に書かれている整数を 11 つ選び,消す. 消した整数を xx とする. 次に,xx22 で割ったあまりをノートに記録する. 最後に,xgeq2x \\geq 2 である場合は,新たに x1x-1 を黒板に書き加える.

すぬけくんの記録は,01 からなる文字列 SS によって表されます. これは,すぬけくんが ii 回目の操作で選んだ整数を 22 で割ったあまりが SiS_i であることを表します.

すぬけくんは,最初に黒板に書いた正整数の組み合わせを忘れてしまいました. 文字列 SS の情報から,最初に黒板に書いた正整数の組み合わせとしてありうるものが何通りあるか求めてください. ここで,正整数の組み合わせ aabb が異なるとは,ある整数 vv が存在して,aa に含まれる vv の個数と bb に含まれる vv の個数が異なることを意味します. なお,答えは非常に大きくなることがあるので,109+710^9+7 で割ったあまりを求めてください. また,すぬけくんの記録が間違っており,条件を満たす正整数の組み合わせが存在しないこともありますが,その場合は単に 00 と答えてください.

制約

  • 1leqSleq3001 \\leq |S| \\leq 300
  • SS01 からなる文字列.

入力

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

SS

出力

最初に黒板に書いた正整数の組み合わせとしてありうるものの数を 109+710^9+7 で割ったあまりを出力せよ.


入力例 1

101

出力例 1

2

最初に黒板に書いた整数の組み合わせとしてあり得るのは,1,2,3\\{1,2\\},\\ \\{3\\}22 つです.


入力例 2

100

出力例 2

0

最初に黒板に書いた整数の組み合わせとしてあり得るものはありません.


入力例 3

010101

出力例 3

3

最初に黒板に書いた整数の組み合わせとしてあり得るのは,2,2,2,2,4,6\\{2,2,2\\},\\ \\{2,4\\},\\ \\{6\\}33 つです.


入力例 4

11101000111110111101001011110010111110101111110111

出力例 4

3904