Шаріф Суперкомп'ютер#6912

Шаріф Суперкомп'ютер

1 секунда
64 мегабайти
Дуже складна

SSC — це суперкомп'ютер, розроблений у Шаріфському університеті з контролерами та робочими процесорами. Він може запускати програмне забезпечення паралельно: один із контролерів завантажує програму на робочі процесори так, щоб використання пам'яті й процесора між ними було збалансованим, тоді як інший контролер слугує для моніторингу системи.

Через залежності між різними частинами програмного забезпечення необхідно обмінюватися багатьма повідомленнями між процесорами. Потрібна дуже швидка мережа, щоб мінімізувати затримку передачі повідомлень. Для оптимізації мережі буде побудована структура кліки, у якій між кожною парою процесорів існує прямий комунікаційний кабель.

Є два типи кабелів: сині кабелі, які можуть передавати до Мегабіт за секунду, і червоні кабелі, що можуть передавати до Гігабіта за секунду. Кожна пара робочих процесорів буде з'єднана одним синім кабелем. Через більший обсяг взаємодії на контролерах, два контролери з'єднуються одним червоним кабелем, а також кожен контролер з'єднується з кожним робочим ще одним червоним кабелем.

Отже, SSC складається з n + 2 материнських плат, кожна з яких містить рівно один процесор, необхідну пам'ять, а також n + 1 однакових мережевих роз'ємів, встановлених горизонтальним рядом. Материнські плати розміщують у вертикальному шафовому корпусі, кожну на окремій горизонтальній полиці. Тому кожній платі відповідає певна висота у стійці.

Охолоджувальна система змусила нас розташувати обидві материнські плати контролерів на найнижчій та найвищій полицях шафи. Вважається, що контролер унизу має висоту , а висоти інших материнських плат — це цілі числа, більші за . Ви, як комп'ютерний інженер, повинні виконати фінальне складання SSC. Вам надано порожню шафу та готові плати, і ваше завдання — визначити, чи можете ви розташувати плати у шафі так, щоб усе відповідало обмеженням і довжинам кабелів.

Є рівно 2n + 1 червоний кабель із заданими розмірами. Проте сині кабелі доступні у різних розмірах, і їх у кожному розмірі необмежена кількість. Ви прагнете, щоб кабелі між процесорами були охайними та короткими, тому бажаєте встановити материнські плати на таких висотах, щоб розмір кабелю між будь-якою парою плат був точно рівний різниці висот цих плат.

Вхідні дані

Вхід містить декілька тестових випадків. У першому рядку кожного тесту задано два числа (1 \leq n \leq 100) та (1 \leq m \leq 1000). У другому рядку йдуть 2n + 1 цілих чисел — це розміри гігабітних (червоних) кабелів. У третьому рядку — цілих чисел, розміри мегабітних (синіх) кабелів. Останній рядок вхідних даних містить два нулі.

Вихідні дані

Для кожного тесту ви повинні вивести n + 1 цілих чисел — висоти материнських плат у стійці SSC. Перше число — це висота верхнього контролера, решта чисел — це позиції робочих (у зростаючому порядку). Якщо існує кілька рішень, виведіть лексикографічно мінімальне. Якщо рішення немає, виведіть Impossible.

Приклади

Приклад 1

Loading
Loading