G. A/B матрица
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Вам даны четыре целых положительных числа $$$n$$$, $$$m$$$, $$$a$$$, $$$b$$$ ($$$1 \le b \le n \le 50$$$; $$$1 \le a \le m \le 50$$$). Найдите любую такую прямоугольную матрицу размера $$$n \times m$$$, что выполняются все следующие условия:

  • в каждой строке матрицы ровно $$$a$$$ единиц;
  • в каждом столбце матрицы ровно $$$b$$$ единиц;
  • все остальные элементы — нули.

Если искомой матрицы не существует, то укажите это.

Например, для $$$n=3$$$, $$$m=6$$$, $$$a=2$$$, $$$b=1$$$ существует такая матрица, удовлетворяющая условиям выше:

$$$$$$ \begin{vmatrix} 0 & 1 & 0 & 0 & 0 & 1 \\ 1 & 0 & 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 & 1 & 0 \end{vmatrix} $$$$$$

Входные данные

В первой строке записано целое число $$$t$$$ ($$$1 \le t \le 1000$$$) — количество наборов тестовых данных в тесте. Далее следуют $$$t$$$ наборов тестовых данных.

Каждый набор тестовых данных описывается четырьмя целыми положительными числами $$$n$$$, $$$m$$$, $$$a$$$, $$$b$$$ ($$$1 \le b \le n \le 50$$$; $$$1 \le a \le m \le 50$$$), где $$$n$$$ и $$$m$$$ — размеры матрицы, а $$$a$$$ и $$$b$$$ — ограничения на количества единиц для строк и столбцов, соответственно.

Выходные данные

Для каждого набора тестовых данных выведите:

  • «YES» (без кавычек) и искомую матрицу (если существует несколько ответов, выведите любой), если она существует, или,
  • «NO» (без кавычек), если ее не существует.

Чтобы вывести матрицу $$$n \times m$$$, выведите $$$n$$$ строк, каждая из которых содержит $$$m$$$ чисел $$$0$$$ или $$$1$$$, описывающих очередную строку матрицы. Числа нужно выводить без пробелов.

Пример
Входные данные
5
3 6 2 1
2 2 2 1
2 2 2 2
4 4 2 2
2 1 1 2
Выходные данные
YES
010001
100100
001010
NO
YES
11
11
YES
1100
1100
0011
0011
YES
1
1