Для восстановления популяции слонов в одной африканской стране было предложено создать специализированную ферму. Под ферму был выделен участок саванны размером $$$ n \times m $$$ километров. Численность стада слонов такова, что за день оно съедает растительность на 1 кв. километре, после чего его следует перевести на другой участок.
Для оптимизации процесса вся ферма была разбита на квадратные участки со стороной 1 км, огороженные заборами. Было решено, что перевод стада будет осуществляться только 1 раз в день и только на соседний участок, имеющий с нынешним общую сторону.
Установлено, что для поддержания максимально естественного процесса питания слоны должны питаться по $$$ k $$$ дней подряд одной и той же травой. Каждый участок будущего пастбища планируется засеять одним видом травы, и всего будет задействовано $$$ p $$$ их разновидностей.
Чтобы растительность между визитами стада максимально восстанавливалась, было предложено составить циклический маршрут таким образом, чтобы он:
Напишите программу, которая по заданным числам $$$ n $$$, $$$ m $$$, $$$ k $$$ и $$$ p $$$ построит маршрут стада слонов, либо сообщит что такого решения нет.
На вход программе подаются четыре целых числа: $$$ n ~ (1 \leq n \leq 100)$$$, $$$ m ~ (1 \leq m \leq 100)$$$, $$$ k $$$ и $$$ p $$$ $$$( k, p \gt 0,~ 2 \lt k \times p \leq n \times m )$$$, разделенные пробелами.
Первая строка вывода должна содержать слово «YES» (без кавычек), если решение существует, и слово «NO» в противном случае. Если решение существует, то далее выведите блок из $$$ n $$$ строк. Блок описывает маршрут движения стада. Каждая строка состоит из $$$ m $$$ различных символов:
Если решений несколько, выведите любое из них.
3 3 2 4
YES r-7 |rJ LJ.
3 3 3 3
NO