CF1129C Morse Code
题目描述
在摩尔斯电码(以下简称“摩码”)中,字母表中的一个字母被表示为一个长度为 $1\sim 4$ 的 01 串。长度为 $1\sim 4$ 的 01 串共有 $2^1+2^2+2^3+2^4=30$ 个,而字母只有 $26$ 个,所以有 $4$ 个 01 串不表示任何字母(`0011`、`0101`、`1110`、`1111`),其他 $26$ 个 01 串表示互不相同的 $26$ 个字母。
你有一个 01 串 $S$ ,初始为空。现在有 $m$ 次添加操作,每次往 $S$ 的末尾添加一个字符(`0` 或 `1`)。对于每一次添加,你都要回答目前的 $S$ 的所有非空子串用摩码所能表示的字母串的总数。由于答案可能巨大,你只需要输出答案模 $10^9+7$ 的结果。
输入格式
第一行一个整数 $m~(1 \leq m \leq 3000)$,表示添加操作的次数。
第 $2$ 至 $m+1$ 行,每行一个整数 $0$ 或 $1$,表示每次添加的字符。
输出格式
共 $m$ 行,每行输出一个整数,表示每一次添加之后的答案。
说明/提示
对于所有数据,保证 $1\le m\le 3000$。