给定长度为 3n、值域为 [0,3] 的整数序列 S=s1s2⋯s3n。你需要首先将 S 中的每个 0 替换为 [1,3] 中的任意一个整数,得到序列 T=t1t2⋯t3n,然后给出 n 个长度为 3 的整数序列 {ai,1,ai,2,ai,3}1≤i≤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) 取模的结果。
样例数据
样例 1 输入
5
1
123
1
100
1
000
2
321321
2
000001
样例 1 输出
0
1
3
6
60
样例 1 解释
前三组测试数据中 n=1,故 {a1,1,a1,2,a1,3}={1,2,3}。
对于第一组测试数据,只能有 T=123,而 {1,2,3} 的逆序对数为 0 不合法,故不存在方案。
对于第二组测试数据,T=123 不合法,而 T=132 时 {1,3,2} 的逆序对数为 1 合法,故存在一个方案。
对于第三组测试数据,取 T=132,T=213,T=321 可以得到三个合法方案。
对于第四组测试数据,T=321321,有如下六种方案:
- {a1,1,a1,2,a1,3}={1,2,3},{a2,1,a2,2,a2,3}={4,5,6}
- {a1,1,a1,2,a1,3}={4,5,6},{a2,1,a2,2,a2,3}={1,2,3}
- {a1,1,a1,2,a1,3}={1,2,6},{a2,1,a2,2,a2,3}={3,4,5}
- {a1,1,a1,2,a1,3}={3,4,5},{a2,1,a2,2,a2,3}={1,2,6}
- {a1,1,a1,2,a1,3}={1,5,6},{a2,1,a2,2,a2,3}={2,3,4}
- {a1,1,a1,2,a1,3}={2,3,4},{a2,1,a2,2,a2,3}={1,5,6}
样例 2
见下发文件。
该组样例中五组数据的 n 分别为 3,5,8,12,17。
样例 3
见下发文件。
该组样例满足特殊性质 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 的字符串构成。
提示
请注意程序的空间消耗。