Мир в опасности.
Далеко-далеко на крайнем Западе стоит храм Хаоса и Порядка. Каждая из этих двух сил, если дать ей свободу, могла бы уничтожить Землю, поэтому
спокойствие мира зависит от тонкого баланса между ними. Этот баланс поддерживают Монахи Равновесия.
Пол в храме расчерчен на одинаковые квадраты так, что получается
поле n × m. В каждый квадрат Монахи Равновесия вписывают одну из k рун так, чтобы соблюсти нужный баланс.
Заклинанием уровня t называются t одинаковых рун,
стоящих подряд в одной строке, одном столбце или на одной диагонали таблицы.
Один раз в тысячелетие воплощения Порядка и Хаоса встречаются на Земле и договариваются о том,
каким должен быть баланс l в этом тысячелетии. И через один день и
две секунды после этой встречи монахи должны заполнить пол храма Хаоса и Порядка так,
чтобы на нём встречались заклинания уровня l − 1 (иначе Хаос уничтожит мир), но
не встречалось заклинаний уровня l (иначе мир будет уничтожен Порядком).
Помогите монахам найти нужное расположение рун и спасти Вселенную. На то, чтобы вписать руны, им потребуется целый день,
поэтому ваша программа должна работать не дольше двух секунд.
Исходные данные
В единственной строке входных данных содержатся целые числа n, m, k, l
(1 ≤ n, m ≤ 100; 1 ≤ k ≤ 26; 2 ≤ l ≤ 100).
Результат
Если вписать руны нужным образом невозможно, то в единственной строке выведите «NO». Иначе в первой строке
выведите «YES», а в следующих n строках по m символов в каждой — заполненный рунами пол. Каждая руна
должна обозначаться заглавной латинской буквой, разные руны обозначаются разными буквами, одинаковые — одинаковыми.
Для обозначения рун разрешается использовать только первые k букв алфавита.
Примеры
исходные данные | результат |
---|
3 4 4 2
| YES
ABCB
CDAD
ABCB
|
2 2 1 2
| NO
|
Автор задачи: Григорий Назаров
Источник задачи: Уральская региональная командная олимпиада по программированию 2012