#P1056. 图游走(walk)

图游走(walk)

walk

题目描述

有一个包含 NN 个节点的图,节点编号为 1,2,…,N1,2,\dots,N。每个节点被染成黑色或白色,其中节点 11 为黑色,节点 22 为白色。

对于任意两个不同的节点 i,ji,j,都有一条从节点 ii 到节点 jj 的有向边。边的颜色按以下规则确定:

  • 如果 i<ji<j 且两个节点颜色相同,则边为红色;
  • 如果 i<ji<j 且两个节点颜色不同,则边为蓝色;
  • 如果 i>ji>j 且两个节点颜色相同,则边为蓝色;
  • 如果 i>ji>j 且两个节点颜色不同,则边为红色。

LoBren 最喜欢的颜色初始为蓝色。他按照以下规则在图上行走,行走过程中可以重复经过节点和边:

  1. 如果当前位于节点 11,他最喜欢的颜色变为蓝色;否则,如果当前位于节点 22,他最喜欢的颜色变为红色。
  2. 从当前节点出发,沿一条颜色与他最喜欢的颜色相同的出边移动。可以证明,这样的边一定存在。
  3. 他可以选择继续重复以上过程,也可以停止。

按照访问顺序记录节点,得到列表 l1,l2,…,lLl_1,l_2,\dots,l_L。求满足以下条件的列表数量,答案对 109+710^9+7 取模:

  • 列表以节点 11 开始,以节点 22 结束;
  • 对于所有 3≤i≤N3\le i\le N,节点 ii 在列表中至多出现一次;
  • 对于所有 3≤j≤L3\le j\le L,均有 lj−2≠ljl_{j-2}\ne l_j。

可以证明,满足条件的列表数量是有限的。

输入格式

第一行包含一个整数 NN。

第二行包含一个长度为 NN、仅由字符 B 和 W 组成的字符串。第 ii 个字符为 B 表示节点 ii 为黑色,为 W 表示节点 ii 为白色。

保证字符串的第一个字符为 B,第二个字符为 W。

输出格式

输出一行,表示满足条件的列表数量对 109+710^9+7 取模后的结果。

输入输出样例 #1

输入 #1

4
BWWB

输出 #1

4

说明 #1

四个满足条件的列表为:

  • 1→21\to 2;
  • 1→3→21\to 3\to 2;
  • 1→3→4→1→21\to 3\to 4\to 1\to 2;
  • 1→2→3→1→21\to 2\to 3\to 1\to 2。

输入输出样例 #2

输入 #2

12
BWBWBBBWWBBW

输出 #2

3377552

数据范围

  • 3≤N≤503\le N\le 50;
  • 输入字符串的第一个字符为 B,第二个字符为 W。

子任务

子任务 NN 的范围 附加限制 分值
1 3≤N≤83\le N\le 8 无 44
2 3≤N≤203\le N\le 20 1212
3 3≤N≤503\le N\le 50 恰好有一个黑色节点 1616
4 存在 2≤i≤N2\le i\le N,使得 [2,i][2,i] 中的节点均为白色,其余节点均为黑色
5 最多有 55 个黑色节点 2424
6 无 2828

附加文件