#abc285g. [abc285_g]Tatami

[abc285_g]Tatami

题目描述

我们有一个 HHWW 列的网格。我们用 (i,j)(i,j) 表示从上到下第 ii 行、从左到右第 jj 列的方块。

我们希望用 1×11 \times 1 的方块和 1×21 \times 2 的方块来覆盖这个网格,使得没有方块重叠,并且每个位置都被方块覆盖(方块可以旋转)。

每个方块上都写着 12 或者 ?。方块 (i,j)(i, j) 上的字符为 ci,jc_{i,j}
如果方块上写着 1,则它必须用一个 1×11 \times 1 的方块来覆盖;如果方块上写着 2,则它必须用一个 1×21 \times 2 的方块来覆盖;如果方块上写着 ?,则可以使用任何类型的方块覆盖。

判断是否存在满足条件的方块摆放方式。

约束条件

  • 1H,W3001 \leq H,W \leq 300
  • HHWW 是整数。
  • ci,jc_{i,j} 的取值范围为 12?

输入

从标准输入读入数据,输入格式如下:

HH WW c1,1c1,2c1,Wc_{1,1}c_{1,2}\ldots c_{1,W} \vdots cH,1cH,2cH,Wc_{H,1}c_{H,2}\ldots c_{H,W}

输出

如果存在一种方块摆放方式满足题目描述中的条件,则打印 Yes;否则打印 No

示例输入1

3 4
2221
?1??
2?21

示例输出1

Yes

例如,以下方块摆放方式满足条件。

示例输入2

3 4
2?21
??1?
2?21

示例输出2

No

没有一种满足条件的方块摆放方式。

示例输入3

5 5
11111
11111
11211
11111
11111

示例输出3

No