Sharif Суперкомп'ютер
SSC — це суперкомп'ютер, розроблений у Шаріфському університеті, який має 2 "майстер" процесори та n "рабів" процесорів. Він здатний паралельно виконувати програмне забезпечення: один з майстер-процесорів завантажує програмне забезпечення на раби-процесори, забезпечуючи збалансоване використання пам'яті та процесора, тоді як інший майстер відповідає за моніторинг системи.
Через залежності між різними частинами програмного забезпечення процесори повинні обмінюватися великою кількістю повідомлень. Щоб мінімізувати накладні витрати на передачу повідомлень, потрібна дуже швидка мережа. Для оптимізації мережі буде побудована структура кліки, де між кожною парою процесорів прокладено прямий кабель зв'язку.
Існує два типи кабелів: сині кабелі, які можуть передавати до 100 мегабіт на секунду, і червоні кабелі, які можуть передавати до 1 гігабіт на секунду. Кожна пара рабів-процесорів з'єднана одним синім кабелем. Через більший обсяг зв'язку між майстер-процесорами, два майстри з'єднані одним червоним кабелем, і також кожен майстер з'єднаний з кожним рабом іншим червоним кабелем.
Таким чином, SSC складається з n+2 материнських плат, кожна з яких містить рівно один процесор, необхідну пам'ять і n+1 однакових мережевих роз'ємів, встановлених в горизонтальний рядок. Материнські плати розміщені у вертикальній стійці, кожна на окремій горизонтальній полиці. Таким чином, кожна материнська плата унікально ідентифікується за своєю висотою в стійці.
Система охолодження вимагає, щоб дві майстер-материнські плати були розміщені на найнижчій і найвищій полицях стійки. Ми припускаємо, що майстер внизу має висоту 0, а висоти решти материнських плат — це цілі числа, що перевищують 0. Ваше завдання як інженера з комп'ютерів — виконати остаточну збірку SSC. Вам надається порожня стійка і готові материнські плати, і ваше завдання — визначити, чи можете ви розмістити плати в стійці, що задовольняє обмеженням і довжинам кабелів.
Є рівно 2n+1 червоних кабелів із заданими розмірами. Однак сині кабелі доступні в m різних розмірах, і у нас є необмежена кількість кабелів кожного розміру. Ви прагнете до того, щоб кабелі між процесорами були акуратними і щільними, тому хочете встановити материнські плати на таких висотах, щоб розмір кабелю, використаного між кожною парою материнських плат, точно відповідав різниці між висотами двох плат.
Вхідні дані
Вхід містить кілька тестових випадків. Перша рядок кожного тестового випадку містить два числа n (1 ≤ n ≤ 100) і m (1 ≤ m ≤ 1000). Друга рядок містить 2n+1 цілих чисел, які є розмірами кабелів Gigabit Ethernet. Третя рядок містить m цілих чисел, які є розмірами груп кабелів Megabit Ethernet. Остання рядок входу містить два нулі.
Вихідні дані
Для кожного набору даних ви повинні написати n+1 цілих чисел, що представляють висоти материнських плат у стійці SSC. Перше число позначає висоту верхнього майстер-процесора, а решта n чисел — це позиції рабів у порядку зростання. Якщо існує кілька рішень, виберіть те, яке має мінімальний алфавітний порядок. Якщо рішення немає, напишіть "Impossible".