Фальшивий табло
Як ви знаєте, після церемонії нагородження SWERC зазвичай публікується повна таблиця з детальною інформацією про подані рішення та отримані вердикти. Однак, через помилки в системі управління конкурсом, більшість відповідних даних сьогодні не записуються. Очевидно, що такий стан справ не відповідає високим стандартам, яких ми дотримуємося, тому судді вирішили відновити решту даних на основі будь-якої залишкової інформації та сподіваються, що учасники не зможуть помітити різницю. Щоб спростити наше життя, ми люб'язно просимо вас надати нам рішення, інакше сьогоднішня таблиця результатів залишиться назавжди покритою таємницею (навіть фальшива).
До кінця конкурсу ми знатимемо кількість T команд, кількість P задач та кількість прийнятих рішень кожною командою. За кількістю та кольором кульок, що плавають на території, ми також зможемо визначити, скільки команд розв'язали кожну з задач. Ваше завдання - з'ясувати, які команди розв'язали які задачі.
Наші навички підрахунку не на висоті, тому ваша програма повинна вміти виявляти, коли зібрані нами дані повинні бути неправильними (див. приклад вводу 1). В іншому випадку ви повинні вивести можливе рішення, представлене у вигляді послідовності з T рядків по P символів кожен, наступним чином. І задачі, і команди призначаються з унікальними цілими числами від 1 до P та від 1 до T, відповідно. Для команди номер i (1 ≤ i ≤ T), напишіть рядок з алфавіту N, Y так, щоб його j-й (1 ≤ j ≤ P) символ був Y, якщо команда зуміла розв'язати задачу j, і N в іншому випадку. Наприклад, наступні три рядки утворюють рішення для другого прикладу, де рахунок кожної з трьох команд дорівнює 2, 1, 2, а кількість прийнятих рішень для кожної з трьох задач дорівнює 1, 2, 2:
NYY NNY YYN
Існує принаймні ще одне рішення, а саме
NYY NYN YNY
Коли можливі кілька рішень, ми просимо вас надати те, яке утворює лексикографічно найменший рядок, коли кожен з T рядків об'єднується в порядку. У наведеному вище прикладі ми віддаємо перевагу першому рішенню, оскільки NYYNNYYYN передує NYYNYNYNY в лексикографічному порядку. (Рядок S передує S' в лексикографічному порядку, якщо перший різний символ між ними - це N в S, але Y в S').
Вхідні дані
Кожен вхідний випадок описується трьома рядками:
Перший містить два цілі числа, розділені пробілом, T (кількість команд) та P (кількість задач), з 1 ≤ T, P ≤ 80. Другий містить T цілих чисел, розділених пробілом, від 0 до 90 (включно), i-те з яких вказує кількість задач, розв'язаних командою i. Третій (і останній) рядок має P цілих чисел від 0 до 90, j-те з яких описує кількість команд, що успішно розв'язали задачу j.
Різні вхідні випадки розділені порожнім рядком. Останній рядок вхідного файлу буде "0 0".
Вихідні дані
Якщо вхідні дані мають рішення, виведіть T рядків по P символів кожен, зображуючи лексикографічно найменше рішення, як пояснено вище. В іншому випадку виведіть один рядок зі словом "Impossible". У будь-якому випадку порожній рядок повинен розділяти виходи для різних тестових випадків.