P0562

[cqoi2012]局部极小值

[cqoi2012]局部极小值

有一个 nn 行 mm 列的整数矩阵,其中 11 到 nmnm 之间的每个整数恰好出现一次。如果一个格子比所有相邻格子(相邻是指有公共边或公共顶点)都小,我们说这个格子是局部极小值。

给出所有局部极小值的位置,你的任务是判断有多少个可能的矩阵。

输入格式

输入第一行包含两个整数 nn 和 mm,即行数和列数。

以下 nn 行每行 mm 个字符,其中 X 表示局部极小值,. 表示非局部极小值。

输出格式

输出仅一行,为可能的矩阵总数除以 1234567812345678 的余数。

样例输入

3 2
X.
..
.X

样例输出

60

数据范围

  • 1≤n≤41\le n\le 4;
  • 1≤m≤71\le m\le 7。

来源与许可

本题为 CQOI 2012 试题「局部极小值」,题面与测试数据整理自 BZOJ 2669。

样例 1

输入

3 2
X.
..
.X

输出

60