Команди
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 рядків повинні містити номери студентів кожної команди, по три числа у кожному рядку. Якщо існує декілька розв'язків, то вивести довільний.