Денис, Ваня и Федя собрались на свою первую командную тренировку. Федя 
рассказал, что выучил алгоритм генерации 
кода Грея:
- 
Создадим список из двух элементов: {0, 1}.
- 
Добавим в конец списка все его элементы в обратном порядке: {0, 1, 1, 0}.
- 
К первой половине элементов списка допишем слева 0, ко второй 
половине элементов списка допишем слева 1:
{00, 01, 11, 10}.
- 
Будем повторять шаги 2 и 3 до тех пор, пока длина всех элементов 
списка не станет равна n. 
Число 
n называется 
длиной кода Грея. Так, код длины 3 
выглядит следующим образом: {000, 001, 011, 010, 110, 111, 101, 100}.
Когда Денис применил алгоритм Феди, у него получилось, что на k-й 
позиции в списке (если нумеровать позиции с нуля) стоит двоичное число 
x. Ваня записал на бумажку числа k и x в двоичной 
системе счисления. Спустя много лет эта бумажка попала к вам в руки. К 
сожалению, некоторые цифры на ней стёрлись за эти годы. Сможете ли вы по 
оставшимся цифрам восстановить числа, которые были на ней записаны? 
Исходные данные
В первой строке записано число k в двоичной системе счисления. 
Стёршиеся цифры обозначены символом «?». Во второй строке в аналогичном 
формате записано число x. Длины обоих чисел совпадают и не 
превосходят 105. Числа могут содержать ведущие нули.
Результат
Если по уцелевшим цифрам можно однозначно восстановить числа k и 
x, выведите их, заменив символы «?» на символы «0» и «1». Если 
существует несколько способов сделать это, выведите «Ambiguity». Если 
Денис или Ваня ошиблись, и восстановить числа невозможно, выведите 
«Impossible». 
Примеры
| исходные данные | результат | 
|---|
| 0?1
0?0
 | 011
010
 | 
| ?00
??0
 | Ambiguity
 | 
| 100
100
 | Impossible | 
Автор задачи: Дмитрий Полетаев
Источник задачи: XV Открытый командный чемпионат УрГУ по программированию