#ATarc108d. [ARC108D] AB

[ARC108D] AB

题目描述

给定一个整数 NN44 个字符 $c\_{\texttt{AA}}, c\_{\texttt{AB}}, c\_{\texttt{BA}}, c\_{\texttt {BB}}$。这里,保证给定的 44 个字符均为 A\texttt AB\texttt B

すぬけ君有一个字符串 ss。初始时,ssAB\texttt {AB}

ss 的长度为 s|s|。すぬけ君可以以任意顺序、任意次数(包括 00 次)进行以下 44 种操作:

  1. 选择 1i<s1 \leq i < |s|,且 sis_iA\texttt Asi+1s_{i+1}A\texttt A,在 ss 的第 ii 个字符和第 i+1i+1 个字符之间插入 cAAc_{\texttt {AA}}
  2. 选择 1i<s1 \leq i < |s|,且 sis_iA\texttt Asi+1s_{i+1}B\texttt B,在 ss 的第 ii 个字符和第 i+1i+1 个字符之间插入 cABc_{\texttt {AB}}
  3. 选择 1i<s1 \leq i < |s|,且 sis_iB\texttt Bsi+1s_{i+1}A\texttt A,在 ss 的第 ii 个字符和第 i+1i+1 个字符之间插入 cBAc_{\texttt {BA}}
  4. 选择 1i<s1 \leq i < |s|,且 sis_iB\texttt Bsi+1s_{i+1}B\texttt B,在 ss 的第 ii 个字符和第 i+1i+1 个字符之间插入 cBBc_{\texttt{BB}}

请你求出,经过若干次操作后,使得 ss 的长度变为 NN 时,可能得到的不同字符串的数量。答案对 109+710^9+7 取模。

输入格式

输入从标准输入读入,格式如下:

NN cAAc_{\texttt {AA}} cABc_{\texttt {AB}} cBAc_{\texttt {BA}} cBBc_{\texttt {BB}}

输出格式

输出使 ss 的长度变为 NN 时,可能得到的不同字符串的数量,对 109+710^9+7 取模。

样例 1

输入

4
A
B
B
A

输出

2

样例 2

输入

1000
B
B
B
B

输出

1

说明/提示

限制条件

  • 2N10002 \leq N \leq 1000
  • $c\_{\texttt {AA}}, c\_{\texttt {AB}}, c\_{\texttt {BA}}, c\_{\texttt {BB}}$ 均为 AB

样例解释 1

  • 可能得到的字符串为 ABAB\texttt {ABAB}ABBB\texttt {ABBB},共 22 种。

样例解释 2

  • 可能得到的字符串为 11 种。