#CSP1109. SOS字符串(sos)

SOS字符串(sos)

题目描述

当危机四伏,人们常常通过密信来传递求救信息。

在很多很多年以后,历史学家小 Z 翻阅古籍发现了一些模糊的密信,这些密信其中一些文字已经难以辨认,但在可以辨认的文字中,小 Z 发现了他记忆中的符号 "SOS",这是国际通用的求救信号。小Z 深 知这个信号的重要性,他想知道原始的密信上有多少种可能会出现三次及以上 "SOS" 的组合方式。

小 Z 知道,这些密信可能隐藏着无数种解读方式,但他只关心那些包含三次及以上 "SOS" 的组合(注意 "SOSOS" 只能算出现一次)。

他希望通过计算这些组合的数量,来更深入地了解这些密信背后的故事和含义,这样的合法的密信可能有很多,小 Z 只想知道这些合法组合对 1e9+7 取模的结果即可。

输入格式

sos.in 文件读入数据。

第一行输入的是整数 nn 表示一封密信的长度,请注意密信只可能包含大写的英文字母 。

输出格式

输出到 sos.out 文件。

一个数字,表示有多少种字符串可能出现了三个及以上SOS

样例

10
104
174
122889315
17711
665739088
308235
701079308

说明/提示

样例 1 解释

解释:SOSSOSSOS* 2626 种,*SOSSOSSOS 2626 种,SOSSOS*SOS 2626 种,SOS*SOSSOS 2626 种,其中 * 表示通配符,表示该位置可以放任意 A - Z 的大写字母。

数据范围

对于 20%20\% 的数据,n12n \le 12

对于 40%40\%n200n \le 200

对于 60%60\%n105n\le 10^5

对于 100%100\%n106n \le 10^6