Помогите решить задачу на python или c++
Уже неделю не могу решить эту задачу очень надеюсь на помощь в её решении. Вот условие:
Для пассажиров кольцевой железнодорожной линии, построенной в столице Труляляндии, существует следующая система абонементных билетов. Заплатив ai труляляндских тугриков, пассажир получает право проезда от станции 0 до станции i (и только до неё). Таким образом, право проезда на две станции i и j даёт абонементный билет стоимостью ai+aj. Так как, кроме станции 0, на кольцевой линии находятся ещё n станций, то всего существует 2^n различных абонементов (включая и бесплатный абонемент со станции 0 до самой себя), отличающиеся множеством станций, до которых они дают проезд. Вам дана стоимость каждого из 2^n абонементов. Требуется восстановить ai или сообщить, что при передаче списка стоимостей абонементов произошла ошибка и ни при каких ai указанные стоимости не могут быть сформированы.
Формат ввода: Первая строка содержит одно целое число n (1 ≤ N ≤ 18) — количество станций (кроме станции 0), находящихся на линии. Каждая их последующих 2^n строк содержит одно целое число — стоимость очередного абонемента (0 ≤ p ≤ 2^28).
Формат вывода: Выведите n целых чисел в неубывающем порядке — значения ai. Если вариантов несколько, выведите любой.
Если решения нет, выведите текст “impossible”.
Пример 1
Ввод Вывод
1
0 5
5
Пример 2
Ввод Вывод
3
7 5 2 4 1 6 3 0
1 2 4
Пример 3
Ввод Вывод
2
0 1 2 4
impossible