#abc295h. [abc295_h]E or m

[abc295_h]E or m

题目描述

我们有一个 NN 行和 MM 列的网格 AA。初始时,每个方格上都写有 00
让我们执行以下操作。

  • 对于每个满足 1iN1 \leq i \leq N 的整数 ii,在第 ii 行,将最左边的一个或多个方格中的数字变为 11
  • 对于每个满足 1jM1 \leq j \leq M 的整数 jj,在第 jj 列,将最上方的一个或多个方格中的数字变为 11

定义集合 SS 为所有可以通过这种方式得到的网格。

给定一个 NNMM 列的网格 XX,其中每个方格上的数字为 01?
将每个 ? 替换为 01,可以得到 2q2^q 个网格,其中 qqXX? 的数量。有多少个这样的网格在集合 SS 中?
由于计算结果可能非常大,因此对 998244353998244353 取模。

约束条件

  • NNMM 是整数。
  • 1N,M181 \leq N, M \leq 18
  • XX 是一个 NNMM 列的网格,其中的数字为 01?

输入

输入以以下格式从标准输入给出:

NN MM X1,1X1,2X1,MX_{1,1} X_{1,2} \dots X_{1,M} X2,1X2,2X2,MX_{2,1} X_{2,2} \dots X_{2,M} \vdots XN,1XN,2XN,MX_{N,1} X_{N,2} \dots X_{N,M}

输出

打印一个整数表示答案。

示例输入 1

2 3
0?1
?1?

示例输出 1

6

以下六个网格在 SS 中。

011  011  001
010  011  110

001  011  011
111  110  111

示例输入 2

5 3
101
010
101
010
101

示例输出 2

0

XX 中可能没有 ?,并且答案可能为 00

示例输入 3

18 18
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????
??????????????????

示例输出 3

462237431

请确保对 998244353998244353 取模。