Городские олимпиады/1-6 курсы/Межвузовская олимпиада 2015 - командный тур


4. Острова

Автор задачи: Звигинцев Илья
Источник: Региональная олимпиада по программированию 2015, командный тур
Ограничение по времени: 1 с.
Ограничение по памяти: 128 МБ

Карта некоторого важного объекта представляет собой клетчатое поле, состоящее из n строк и n столбцов. Каждая клетка изначально занята морем, но можно засыпать песком некоторые из клеток клетчатого поля, чтобы создать острова. Объединим набор клеток с песком в остров, если от каждой из клеток этого набора можно добраться до всех оставшихся в этом наборе, перемещаясь только по клеткам с песком, и переходя из клетки с песком в соседнюю с ней по стороне клетку с песком. Клетки называются соседними по стороне, если у них есть общая горизонтальная или вертикальная сторона. Нетрудно заметить, что разные острова не могут иметь общих клеток (иначе бы они в объединении давали больший остров).

Найдите способ засыпать песком некоторые клетки таким образом, чтобы на карте n × n было образовано ровно k островов, и, при этом, нельзя было построить нового острова.

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

В единственной строке входных данных записано два целых числа n и k (1 ≤ n ≤ 100, 1 ≤ kn2) — размер карты и количество островов, которые нужно построить.

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

В первой строке выходных данных необходимо вывести «YES» (без кавычек), если способ засыпать некоторые клетки требуемым образом существует. В следующих n строках требуется вывести описание карты. Каждая из строк описания должна состоять только из символов «S» и «L», где «S» обозначает клетку, занятую морем, а «L» — клетку, засыпанную песком. Кроме того, длина каждой строки описания должна быть в точности равна n. Если искомого ответа не существует, требуется в единственной строке вывести «NO» (без кавычек). Если существует несколько ответов, разрешается вывести любой из них.

Примеры
Стандартный вводСтандартный вывод
5 4YES
SSLLS
LSSLL
SSSLS
LLLSS
LSSSL