#agc038a. [agc038_a]01 Matrix

[agc038_a]01 Matrix

题目描述

我们有一个 HHWW 列的正方形网格。Snuke 想在每个方格中写入 0011。这里,需要满足以下所有条件:

  • 对于每一行,以下两个值中的较小值为 AA:行中包含的 00 的数量和行中包含的 11 的数量。(如果这两个数相等,则“较小值”应被理解为“任意值”。)
  • 对于每一列,以下两个值中的较小值为 BB:列中包含的 00 的数量和列中包含的 11 的数量。

确定是否可以通过在每个方格中写入 0011 来满足这些条件。如果答案是肯定的,请给出一种填充方格的方法,使得满足条件。

约束条件

  • 1H,W10001 \leq H, W \leq 1000
  • 0A0 \leq A
  • 2×AW2 \times A \leq W
  • 0B0 \leq B
  • 2×BH2 \times B \leq H
  • 输入中的所有值均为整数。

输入

输入通过标准输入给出,格式如下:

HH WW AA BB

输出

如果不能通过在每个方格中写入 0011 来满足条件,则打印 1-1

如果可以满足条件,请以以下格式打印一种填充方格的方法:

s11s12s1Ws_{11}s_{12} \cdots s_{1W} s21s22s2Ws_{21}s_{22} \cdots s_{2W} \vdots sH1sH2sHWs_{H1}s_{H2} \cdots s_{HW}

这里,sijs_{ij} 是网格中从上往下第 ii 行、从左往右第 jj 列的方格中写的数字。

如果存在多个解,则任意一种解均可接受。


示例输入 1

3 3 1 1

示例输出 1

100
010
001

每一行都包含两个 00 和一个 11,因此满足第一个条件。此外,每一列都包含两个 00 和一个 11,因此满足第二个条件。


示例输入 2

1 5 2 0

示例输出 2

01010