问题 5587 --缩进问题

5587: 缩进问题

题目描述

Python语言通过缩进的深度来表达语句所属的块。例如有如下代码: ```Python for i in range(0, 10): for j in range(0, 100): a = a + 1 b = b + 2 ``` 因为 `a = a + 1` 缩进最深,所以它属于内层循环,而 `b = b + 1` 缩进较浅,所以它属于外层循环。 Python 的另一个特点是,每条循环语句的循环体不能空,至少需要包含一条语句。 不幸的是,目前有一段 Python 代码的缩进全部消失了,请你计算一下,这段信息不全的代码,可能有多少种不同嵌套结构?例如 ```Python for i in range(0, 10): for j in range(0, 100): a = a + 1 b = b + 2 ``` 除了上一种结构外,还有一种结构为 ```Python for i in range(0, 10): for j in range(0, 100): a = a + 1 b = b + 2 ```

输入

第一行:单个整数 $n$,表示代码的行数; 接下来 $n$ 行:每行一个字符: + 字符 `f` 表示这是一行以 `for` 开头的循环语句; + 字符 `=` 表示这是一行赋值语句,为了保证程序至少有一种合理的解释,保证最后一个字符一定是 `=`。

输出

单个整数:表示输入代码的不同逻辑结构数量,由于可能比较大,输出模 $10^9+7$ 的余数。

样例输入输出

输入#1 复制
4
=
f
f
=
输出#1 复制
1
输入#2 复制
4
f
=
f
=
输出#2 复制
2

提示

+ 对于 $30\%$ 的数据,$1\leq n\leq 20$; + 对于 $60\%$ 的数据,$1\leq n\leq 500$; + 对于 $100\%$ 的数据,$1\leq n\leq 7000$。 样例1说明:只有唯一的一种解释
序号 标题 作者 发表时间 费用 订购数 操作