#HD202506F. 缺失的子序列

缺失的子序列

定义一个长为 nn 的排列 p1,p2,,pnp_1,p_2,\dots,p_n 是好的,当且仅当排列中不存在一组 1i1<i2<i3<i4n1\leq i_1<i_2<i_3<i_4\leq n,使得 pi3<pi1<pi4<pi2p_{i_3}<p_{i_1}<p_{i_4}<p_{i_2}pi2<pi4<pi1<pi3p_{i_2}<p_{i_4}<p_{i_1}<p_{i_3}

catscatsnn 个集合 S1,S2,,SnS_1,S_2,\dots,S_n,其中每个集合 SiS_i 都是 1,2,,n1,2,\dots,n 的子集。现在,catscats 想知道有多少长为 nn 的好的排列 p1,p2,,pnp_1,p_2,\dots,p_n,使得对于任意的 1in1\leq i\leq n,都有 piSip_i\in S_i。由于答案可能很大,你只需要输出答案对 109+710^9+7 取模的结果。

输入格式

第一行包含一个整数 TT (1T1000) (1\leq T\leq 1000),表示一共有 TT 组测试数据。

对于每组测试数据:

第一行为一个整数 nn (1n100) (1\leq n\leq 100),表示排列的长度。

接下来 nn 行,每行为一个长度为 nn0101 字符串,表示第 ii 个集合 SiS_i。其中第 ii 行第 jj 个字符为 00 代表 jSij\notin S_i,第 ii 行第 jj 个字符为 11 代表 jSij\in S_i

保证所有测试数据的 n3n^3 之和不超过 51065\cdot 10^6

输出格式

对于每组测试数据,输出一个整数,表示所有满足条件的排列 pp 的总数对 109+710^9+7 取模的结果。

样例

输入

4
1
1
4
1111
1111
1111
1111
5
11111
10001
10101
10001
11111
13
1111110111111
1111111111111
0111110101111
1111111111011
1111110011111
1111111111111
1011110111011
1111100011111
1111101111111
1110111111111
1100111111111
1111111011101
1111101111111

输出

1
22
2
4045764