D. Пастбище для слонов
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Для восстановления популяции слонов в одной африканской стране было предложено создать специализированную ферму. Под ферму был выделен участок саванны размером $$$ n \times m $$$ километров. Численность стада слонов такова, что за день оно съедает растительность на 1 кв. километре, после чего его следует перевести на другой участок.

Для оптимизации процесса вся ферма была разбита на квадратные участки со стороной 1 км, огороженные заборами. Было решено, что перевод стада будет осуществляться только 1 раз в день и только на соседний участок, имеющий с нынешним общую сторону.

Установлено, что для поддержания максимально естественного процесса питания слоны должны питаться по $$$ k $$$ дней подряд одной и той же травой. Каждый участок будущего пастбища планируется засеять одним видом травы, и всего будет задействовано $$$ p $$$ их разновидностей.

Чтобы растительность между визитами стада максимально восстанавливалась, было предложено составить циклический маршрут таким образом, чтобы он:

  • был максимально длинным;
  • пересекал только вертикальные или горизонтальные границы участков;
  • не содержал самопересечений;
  • состоял из $$$ p $$$ отрезков, засеваемых одинаковой травой, по $$$ k $$$ участков в каждом.

Напишите программу, которая по заданным числам $$$ 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 $$$ различных символов:

  • «.»(точка), если данный участок не посещается;
  • «-»(минус), если маршрут стада пересекает левую и правую границы участка;
  • «|»(вертикальная черта), если маршрут стада пересекает верхнюю и нижнюю границы участка;
  • «L»(заглавная латинская L), если маршрут стада пересекает верхнюю и правую границы участка;
  • «r»(строчная латинская r), если маршрут стада пересекает нижнюю и правую границы участка;
  • «J»(заглаваня латинская J), если маршрут стада пересекает левую и верхнюю границы участка;
  • «7»(цифра 7), если маршрут стада пересекает левую и нижнюю границы участка.

Если решений несколько, выведите любое из них.

Примеры
Входные данные
3 3 2 4
Выходные данные
YES
r-7
|rJ
LJ.
Входные данные
3 3 3 3
Выходные данные
NO