Завдання № 17
відбірково-тренувальних зборів
команди міста Києва

1. Ханойськi башти
Диски з вирізаною серединою (форма бублика) перекладають таким чином:

Завдання
Створіть програму tower.* для визначення найменшої кількості переміщень дисків і розташування дисків після певної кількості переміщень, здійснених за оптимальним щодо кількості переміщень планом.

Вхідні дані
Файл tower.in містить у вказаному порядку кількості дисків n і переміщень k, де n < 60, k < 1018.

Вихідні дані
Єдиний рядок файлу tower.out має містити у вказаному порядку, починаючи з першої позиції:

Диски занумеровано натуральними числами в межах від 1 до n включно у порядку зростання радіусів основ. Вмісти дисків розділено символом «*». Між числами, між числом і роздільником «*» лише 1 пропуск.

Приклади

tower.intower.out
3 17 * 1 * * 2 3 *
3 27 * 1 * 2 * 3 *
3 37 * * 1 2 * 3 *
3 47 * 3 * 1 2 * *
3 57 * 3 * 2 * 1 *
3 67 * 2 3 * * 1 *
3 77 * 1 2 3 * * *

2. Трикутники

Завдання
Створіть програму triangle.*, яка з'ясує, чи можна з даних 4 трикутників утворити трикутник «склеюванням» вздовж сторони.

Вхідні дані
Кожний рядок файлу triangle.in містить чотири трійки натуральних чисел, які є сторонами даних трикутників і менші за 321.

Вихідні дані
Відповідний рядок файлу triangle.out має містити:

Приклад

triangle.intriangle.out
5 4 3 5 4 3 5 4 3 5 4 3
5 4 3 5 4 3 5 4 3 4 4 3
6 8 10
No solution

Примітка щодо оцінювання
Бали за «No solution» присуджують лише у разі успішного проходження решти тестів.