题目描述
给定长度为 3n、值域为 [0,3] 的整数序列 S=s1s2⋯s3n。你需要首先将 S 中的每个 0 替换为 [1,3] 中的任意一个整数,得到序列 T=t1t2⋯t3n,然后给出 n 个长度为 3 的整数序列 ${\{ a_{i, 1}, a_{i, 2}, a_{i, 3} \}}_{1 \le i \le n}$,使得
- ∀1≤i≤n,1≤ai,1<ai,2<ai,3≤3n;
- ∀(i1,j1)=(i2,j2),ai1,j1=ai2,j2;
- ∀1≤i≤n,{tai,1,tai,2,tai,3} 是 {1,2,3} 的一个排列且逆序对数为奇数。
认为两个方案本质不同当且仅当序列 T 不同或存在 ai,j(1≤i≤n,1≤j≤3)不同,求以上操作的本质不同的方案数,对 (109+7) 取模。
输入格式
本题有多组测试数据。输入的第一行包含一个正整数 C 表示测试数据组数。
对于每组测试数据,第一行一个整数 n,接下来一行一个长度为 3n 的字符串描述序列 S。
输出格式
对于每组测试数据输出一行一个整数表示方案数对 (109+7) 取模的结果。
5
1
123
1
100
1
000
2
321321
2
000001
0
1
3
6
60
样例 2
见附加文件中 [problem2.in](file:problem2.in) 和 [problem2.ans](file:problem2.ans)。
该组样例中五组数据的 n 分别为 3,5,8,12,17。
样例 3
见附加文件中 [problem3.in](file:problem3.in) 和 [problem3.ans](file:problem3.ans)。
该组样例满足特殊性质 A,五组数据的 n 分别为 2,4,7,15,19。
数据范围
对于所有测试数据,1≤C≤5,1≤n≤19,字符串 S 的长度为 3n 且仅由 0,1,2,3 构成。
测试点编号 |
n≤ |
特殊性质 |
1 |
1 |
无 |
2 |
2 |
3 |
3 |
4 |
5 |
A |
5 |
7 |
无 |
6 |
10 |
7 |
13 |
A |
8 |
16 |
无 |
9 |
18 |
10 |
19 |
特殊性质 A:字符串 S 由全 0 的字符串构成。
提示
请注意程序的空间消耗。