2939. 黑与白

给定一个 $m$ 行 $n$ 列的方格矩阵,其中的部分格子已经着色(黑色或白色)。

现在你需要对剩余的格子进行着色(黑色或白色),使得着色后的矩阵满足下列两个条件:

  1. 所有黑色格子相互连通,所有白色格子相互连通。下面两个矩阵中,左侧矩阵不满足此条件,右侧矩阵满足此条件。
    QQ截图20201204141224.png
  2. 不会存在 $2 \times 2$ 的子矩阵满足四个格子颜色完全相同。下面两个矩阵中,左侧矩阵不满足此条件,右侧矩阵满足此条件。
    QQ截图20201204141443.png

请问共有多少种不同的着色方案,并输出任意一种可行方案。

注意,你不能修改已经着色的格子的颜色,并且所有格子都必须着色,

输入格式

第一行包含一个整数 $T$,表示共有 $T$ 组测试数据。

每组数据第一行包含两个整数 $m,n$。

接下来 $m$ 行,每行包含 $n$ 个字符。# 表示黑色格子,o 表示白色格子,. 表示还未着色格子。

输出格式

对于每组数据,首先输出一行一个整数,表示着色方案数。

如果方案数不小于 $1$,则输出任意一种合理方案。

每组数据输出完毕后,输出一个空行。

数据范围

$1 \le T \le 100$,
$2 \le M,N \le 8$

输入样例:

4
3 3
o..
.##
...
5 5
..#..
.....
....o
o....
.#...
7 5
.....
..o..
#....
.....
..o..
...#.
o....
2 3
###
oo#
6 8
........
........
........
........
.#......
........

输出样例:

4
oo#
o##
oo#

0

176
#####
#ooo#
###oo
#o##o
#oooo
####o
ooooo

1
###
oo#

71582
#ooooooo
#o#####o
#ooooo#o
#o#o#o#o
#######o
#ooooooo