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$。