

Time Limit: 2 sec / Memory Limit: 1024 MB
配点 : 400 点
問題文
整数 N が与えられます。次の条件を満たす長さ N の文字列の数を 10^9+7 で割った余りを求めてください。
A
,C
,G
,T
以外の文字を含まない。AGC
を部分文字列として含まない。- 隣接する 2 文字の入れ替えを 1 回行うことで上記の条件に違反させることはできない。
注記
文字列 T の部分文字列とは、T の先頭と末尾から 0 文字以上を取り去って得られる文字列です。
例えば、ATCODER
の部分文字列には TCO
, AT
, CODER
, ATCODER
, (空文字列) が含まれ、
AC
は含まれません。
制約
- 3 \leq N \leq 100
入力
入力は以下の形式で標準入力から与えられる。
N
出力
条件を満たす文字列の数を 10^9+7 で割った余りを出力せよ。
入力例 1
3
出力例 1
61
A
, C
, G
, T
以外の文字を含まない長さ 3 の文字列は 4^3 = 64 通り存在し、そのうち AGC
, ACG
, GAC
のみが条件に違反するため、答えは 64 - 3 = 61 通りです。
入力例 2
4
出力例 2
230
入力例 3
100
出力例 3
388130742
文字列の数を 10^9+7 で割った余りを出力することをお忘れなく。
Score : 400 points
Problem Statement
You are given an integer N. Find the number of strings of length N that satisfy the following conditions, modulo 10^9+7:
- The string does not contain characters other than
A
,C
,G
andT
. - The string does not contain
AGC
as a substring. - The condition above cannot be violated by swapping two adjacent characters once.
Notes
A substring of a string T is a string obtained by removing zero or more characters from the beginning and the end of T.
For example, the substrings of ATCODER
include TCO
, AT
, CODER
, ATCODER
and (the empty string), but not
AC
.
Constraints
- 3 \leq N \leq 100
Input
Input is given from Standard Input in the following format:
N
Output
Print the number of strings of length N that satisfy the following conditions, modulo 10^9+7.
Sample Input 1
3
Sample Output 1
61
There are 4^3 = 64 strings of length 3 that do not contain characters other than A
, C
, G
and T
. Among them, only AGC
, ACG
and GAC
violate the condition, so the answer is 64 - 3 = 61.
Sample Input 2
4
Sample Output 2
230
Sample Input 3
100
Sample Output 3
388130742
Be sure to print the number of strings modulo 10^9+7.