#arc108d. [arc108_d]AB

[arc108_d]AB

题目描述

给定一个整数 NN 和四个字符 cAAc_{\mathrm{AA}}cABc_{\mathrm{AB}}cBAc_{\mathrm{BA}}cBBc_{\mathrm{BB}}。这四个字符保证都是 AB

Snuke 有一个字符串 ss,初始为 AB

s|s| 为字符串 ss 的长度。Snuke 可以以任意顺序、零次或多次进行以下四种操作:

  1. 选择 ii,满足 1i<s1 \leq i < |s|sis_i = Asi+1s_{i+1} = A,并在字符串 ss 的第 ii 和第 (i+1)(i+1) 之间插入字符 cAAc_{\mathrm{AA}}
  2. 选择 ii,满足 1i<s1 \leq i < |s|sis_i = Asi+1s_{i+1} = B,并在字符串 ss 的第 ii 和第 (i+1)(i+1) 之间插入字符 cABc_{\mathrm{AB}}
  3. 选择 ii,满足 1i<s1 \leq i < |s|sis_i = Bsi+1s_{i+1} = A,并在字符串 ss 的第 ii 和第 (i+1)(i+1) 之间插入字符 cBAc_{\mathrm{BA}}
  4. 选择 ii,满足 1i<s1 \leq i < |s|sis_i = Bsi+1s_{i+1} = B,并在字符串 ss 的第 ii 和第 (i+1)(i+1) 之间插入字符 cBBc_{\mathrm{BB}}

计算满足 Snuke 进行操作后字符串 ss 长度为 NN 的字符串数量,对 (109+7)(10^9+7) 取模。

约束条件

  • 2N10002 \leq N \leq 1000
  • cAAc_{\mathrm{AA}}cABc_{\mathrm{AB}}cBAc_{\mathrm{BA}}cBBc_{\mathrm{BB}} 均为 AB

输入

从标准输入读入输入数据的格式如下:

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

输出

输出满足 Snuke 进行操作后字符串 ss 长度为 NN 的字符串数量,对 (109+7)(10^9+7) 取模。

示例输入 1

4
A
B
B
A

示例输出 1

2
  • 当 Snuke 进行操作后,有两种可能的字符串:ABABABBB

示例输入 2

1000
B
B
B
B

示例输出 2

1
  • 当 Snuke 进行操作后,只有一种可能的字符串。