luogu#P6582. 座位调查

座位调查

题目背景

ION 2048 结束了,但 ℲƆƆ 发现,一个机房里发生了性质恶劣的作弊事件。

题目描述

Youyou 奉命来到该机房进行调查。已知该机房是一个 n×mn \times m 的矩阵,每个位置是 OX,其中 O 表示该位置是座位,X 表示该位置是空地。每个座位上都必须坐有学生,当然,至少有一个座位。

要想查明作弊的学生,Youyou 必须知道这个机房中的考生有多少种座位的可能。ION 2048 有来自 kk 个学校的考生参加,且座位满足以下要求:

  • 考场中的座位是由若干长条形组成的,这样方便管理;
  • 任意考生不可能和来自同学校的考生座位相邻,可以避免交流。

两个座位是相邻的当且仅当它们有一条公共边

条形定义为除了两个端点只有一个相邻的座位外,每个座位都恰好有两个相邻座位,当然,一个座位也属于条形的。

例如,下面的都「条形的座位」。

下面的都不是「条形的座位」。

注:方格中的数字表示与其相邻的座位的个数。

试求出合法的座位方案总数,由于结果可能很大,请输出结果对质数 998244353998244353 取模的结果。如果这个机房本身就不可能是 ION 2048 的考试机房,答案应当是 00

输入格式

第一行三个正整数,n,mn,mkk

接下来 nn 行,每行 mm 个字符,表示机房的情况。保证只有 OX 两种字符,且 O 至少出现一次。

输出格式

一行一个整数,表示结果对质数 998244353998244353 取模的结果。

2 3 2
OOX
XXO
4
2 3 3
XOX
XOO
12
2 3 4
XOO
XOO
0

提示

样例 1 解释

可能有以下 44 种情况,红色代表学校 11 的学生,蓝色代表学校 22 的学生:

样例 2 解释

可能有以下 1212 种情况,红色代表学校 11 的学生,蓝色代表学校 22 的学生,黄色代表学校 33 的学生:

样例 3 解释

机房不是条形安排的,所以答案为 00

数据规模与约定

  • Subtask 1(10 分):n=1n = 1k=2k = 2
  • Subtask 2(15 分):n=1n = 12m,k82 \le m,k \le 8
  • Subtask 3(15 分):n=1n = 1
  • Subtask 4(20 分):保证座位设置是条形的,k=2k = 2
  • Subtask 5(20 分):保证座位设置是条形的;
  • Subtask 6(20 分):无特殊限制。

对于全部的数据,1n,m1031 \le n, m \le 10^32k1092 \le k \le 10^9