你需要用俄罗斯方块(tetromino)中的形状填满一个 $n \times m$ 的网格,但坐标为 $(r, c)$ 的单元格除外。
这些俄罗斯方块形状如下:
以及它们的旋转和镜像。
输入格式
第一行包含一个整数 $t$ —— 测试用例的数量。接下来的 $t$ 行,每行包含四个空格分隔的整数 $n_i, m_i, r_i, c_i$,分别表示网格的大小以及不需要填充的单元格坐标。
$$1 \le r_i \le n_i$$ $$1 \le c_i \le m_i$$ $$\sum n_i \times m_i \le 10^5$$
输出格式
对于每个测试用例,如果可以完成填充,请输出 “YES”。接下来,输出 $n_i \times m_i$ 个数字表示填充方案。每个数字对应单元格所属的图形编号。坐标 $(r_i, c_i)$ 处的单元格必须填入 0,其余图形应从 1 开始依次编号。如果无法完成填充,则输出 “NO”。
样例
输入格式 1
2 3 3 2 2 4 4 1 2
输出格式 1
YES 1 1 1 1 0 2 2 2 2 NO