Команды
3·N студентов одного курса обучаются на двух специальностях - математики (M) и программирования (P). Давайте назовем студентов первой специальности математиками, а второй программистами. На каждой специальности имеется несколько групп. Число групп на каждой из специальностей одинакова. Количество студентов в каждой группе больше или равно трем.
Студенты очень заняты учебой, поэтому они могут встретиться друг с другом во время занятий. Каждая группа занимается в отдельной аудитории, кроме физкультуры. Занятия по физкультуре проводятся для пар групп разных специальностей, каждая группа на занятиях по физкультуре проводит время только с одной другой. Все группы посещают физкультуру.
Все студенты ответственны, и исправно посещают занятия. Когда студенты встречаются на одном из занятий, они становятся знакомыми.
В каждой группе имеется староста. Все старосты посещают совет старост, на котором все они встречаются друг с другом и становятся знакомыми.
Вам следует сформировать N команд, состоящих из трех студентов таким образом, чтобы каждый студент присутствовал только в одной из них. В каждой команде должен присутствовать хотя бы один математик и хотя бы один программист. Все члены одной команды должны быть знакомы друг с другом.
Входные данные
Первая строка содержит 2 целых числа K и M (1 ≤ K, M ≤ 1000, K = 3·N) - общее число студентов и количество пар знакомых студентов. Вторая строка содержит K символов 'M' или 'P', i-ый символ описывает специальность i-го студента. Следующие M строк описывают пары знакомых студентов. Гарантируется, что специальности студентов и их отношения не противоречат условию задачи.
Выходные данные
В первой строке вывести Yes или No в зависимости от того, можно ли образовать N команд. Если это сделать возможно, следующие N строк должны содержать номера студентов каждой команды, по три числа в каждой строке. Если существует несколько решений, то вывести любое.