C1682 [Wannafly冬令营2018Day5]Kropki(简单版)

内存限制:256 MB 时间限制:3000 ms

题目描述

你有一个 $1$ 到 $n$ 的排列 $p_1, p_2, \dots, p_n$,对于所有的 $i (1\leq i\leq n-1)$,如果 $p_i$ 和 $p_{i+1}$ 中,有一个数是另一个的两倍,那么会在这两个数之间画上一个点,否则不会。

现在你把所有数字都擦掉了,只剩下了这些点,请问有多少种 $1$ 到 $n$ 的排列满足条件。

输入格式

第一行一个正整数 $n (2\leq n\leq 15)$。

接下来一行一个长度为 $n-1$ 的 $01$ 串,其中第 $i$ 个字符为 $1$ 表示第 $i$ 个数与第 $i+1$ 个数之间有点,否则没有。

输出

输出一个答案,由于答案可能很大,对 $10^9+7$ 取模。

样例

样例输入 1

4 100

样例输出 1

6

提示