БДП (бінарне дерево пошуку) є ефективною структурою для пошуку. В БДП усі елементи лівого піддерева менші, а усі елементи правого піддерева більші за значення кореня. Розглянемо приклад БДП:
Зазвичай БДП будується в результаті послідовної вставки елементів. У такому випадку послідовність вставки елементів впливає на структуру результуючого дерева. Наприклад:
У цій задачі Вам необхідно знайти такий порядок вставки чисел від 1 до n, щоб отримане БДП мало висоту не більшу за h. Висота БДП визначається наступним чином:
Висота БДП, яке не містить жодної вершини, дорівнює 0.
Інакше висота БДП дорівнює 1 плюс максимум висот лівого та правого піддерева.
Умові задачі можуть задовольняти декілька послідовностей вставок. У такому випадку слід вивести послідовність, в якій спочатку йдуть менші числа. Наприклад, для n = 4, h = 3 слід вивести послідовність 1 3 2 4, а не 2 1 4 3 чи 3 2 1 4.
Кожний тест містить два натуральних числа n (1 ≤ n ≤ 10000) та h (1 ≤ h ≤ 30). Останній тест містить n = 0, h = 0 і не обробляється. На вхід подається не більш ніж 30 тестів.
Результат кожного теста слід вивести в окремому рядку. Кожний рядок починається з "Case #: ", де "#" - номер тесту. Далі у цьому ж рядку слід вивести послідовність із n цілих чисел – порядок вершин, в якому вони будуть вставлятися в БДП висоти не більшої за h. У кінці рядка не повинно бути зайвих проміжків. Якщо потрібне дерево побудувати неможливо, то вивести "Impossible." (без подвійних лапок).