#P5171. [Jsoi2013]黑白棋

[Jsoi2013]黑白棋

Description

小Z最近在玩一个叫做黑白棋的单机小游戏。

这个游戏的规则如下:

(1)棋盘为一个n*m的矩阵,每个格子可能是黑色或白色;

(2)游戏目标是将所有格子变为黑色;

(3)游戏参与者的每次操作是:选出一个白色格子,将它以及它所在行的格子与所在列的格子全部染成黑色;

(4)当所有的格子都变为黑色时,游戏结束。完成这个游戏有许多种方案,每种方案可以表示成若干格子的一个序列。

若两种方案长度不同或者存在i使得两种方案中的第i个格子不同,则认为这两种方案不同。 由于完成这个游戏的难度系数为0,聪明的小Z自然不满足于此,他还想知道一共有多少种方案可以完成这个游戏。 现在给你这个棋盘的初始状态,请你算一下不同方案的个数。 由于方案可能很多,所以只需要求出答案对1000000007取模后的余数。

Format

Input

每个测试点包含多组测试数据。

第一行,包含一个整数,T,表示数据组数。

接下来依次给出T组数据。

每组数据第一行,包含两个整数,n、m,表示棋盘的大小。

接下来n行,每行一个长度为m的字符串。

其中第i行、第j个字符描述棋盘的第i行第j列的格子。“B”表 示为黑色格子,“.”表示为白色格子。

1≤n,m,T≤20,每个棋盘中的黑色格子不超过 8 个

Output

一共包含T行,第i行包含一个整数,表示第i组数据的答案。

Samples

2
2 3
. . .
B B .
4 4
. . . .
. . . .
. . . .
. . . .
5
576