AT_otemae2019_d FizzBuzz (FizzBuzz)

题目描述

皮太郎和你在玩快乐的游戏。 皮太郎在$10$进制中有$N$位正整数,这个数的开头不是$0$。 皮太郎把这个从上面的位数一位一位地读出来。当你听到皮太郎说数字的时候,都会把皮太郎之前读过的数字按照读过的顺序从上面的位数开始排列的整数作为$K$,如果$K$是$3$的倍数而不是$5$的倍数的话就说`Fizz`,如果是$5$的倍数而不是$3$的倍数的话就说`Buzz`,如果是$15$的倍数的话就说`FizzBuzz`。如果$K$不是$3$的倍数,也不是$5$的倍数,你什么都不说。例如,如果皮太郎朗读$12\,345\,670$这个数字,你就会说出`Fizz`、`Fizz`、`FizzBuzz`、`Fizz`、`Buzz`这5句话。 你在确认游戏的游戏记录。记录上写着你刚刚说了$M$次,并写着第$i(1\le i\le M)$次的发言是$S_i$。 编写一个可以求出满足该记录的$N$位正整数的可能个数除以$100000000007$的余数的程序。

输入格式

以下面的格式输入。 >$N\,M\,S_1\vdots S_M$

输出格式

在标准输出中,$1$行输出满足条件的正整数个数除以$100000000007$的余数。

说明/提示

### 约束条件 - $1\le N\le1\,000$。 - $0\le M\le N$。 - Si是Fizz、Buzz、FizzBuzz中的任意一种(1\le i\le M)。 ### 小课题 1. ($10$点)$N\le6$。 2. ($2$点)$N=M$,$Si(1\le i\le N)$为`FizzBuzz`。 3. ($14$点)$N=M$,$S_i(1\le i\le N)$为`Fizz`. 4. ($14$点)$N=M$,$S_i(1\le i\le N)$为`Buzz`. 5. ($20$点)$N=M$。 6. ($40$点)无其他限制。 ### 样例解释1 $105$,$255$,$405$,$525$,$585$,$705$,$855$满足给定记录。 ### 样例解释5 例如`01`和`07`这样的数字不能被视为$2$位数,所以要注意。