定义一个长为 n 的排列 p1,p2,…,pn 是好的,当且仅当排列中不存在一组 1≤i1<i2<i3<i4≤n,使得 pi3<pi1<pi4<pi2 或 pi2<pi4<pi1<pi3。
cats 有 n 个集合 S1,S2,…,Sn,其中每个集合 Si 都是 1,2,…,n 的子集。现在,cats 想知道有多少长为 n 的好的排列 p1,p2,…,pn,使得对于任意的 1≤i≤n,都有 pi∈Si。由于答案可能很大,你只需要输出答案对 109+7 取模的结果。
输入格式
第一行包含一个整数 T (1≤T≤1000),表示一共有 T 组测试数据。
对于每组测试数据:
第一行为一个整数 n (1≤n≤100),表示排列的长度。
接下来 n 行,每行为一个长度为 n 的 01 字符串,表示第 i 个集合 Si。其中第 i 行第 j 个字符为 0 代表 j∈/Si,第 i 行第 j 个字符为 1 代表 j∈Si。
保证所有测试数据的 n3 之和不超过 5⋅106。
输出格式
对于每组测试数据,输出一个整数,表示所有满足条件的排列 p 的总数对 109+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