[CQOI2012]局部极小值
题号:NC19922
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

有一个n行m列的整数矩阵,其中1到nm之间的每个整数恰好出现一次。如果一个格子比所有相邻格子(相邻是指有公共边或公共顶点)都小,我们说这个格子是局部极小值。
给出所有局部极小值的位置,你的任务是判断有多少个可能的矩阵。

输入描述:

输入第一行包含两个整数n和m(1 ≤ n ≤ 4, 1 ≤ m ≤ 7),即行数和列数。
以下n行每行m个字符,其中“X”表示局部极小值,“.”表示非局部极小值。

输出描述:

输出仅一行,为可能的矩阵总数除以12345678的余数。
示例1

输入

复制
3 2
X.
..
.X

输出

复制
60

备注:

对于100%的数据,保证