eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

І знову ханойські вежі

І знову ханойські вежі

Усім напевне відома ломиголовка "Ханойські вежі". У ломиголовці є три стержні та \textbf{N} дисків різного радіуса. Спочатку усі диски розміщені на першому стержні, упорядковані по радіусу - диск з найбільшим радіусом розміщено знизу, а з найменшим зверху. За один хід дозволяється взяти верхній диск з довільного стержня і перекласти його на інший, дотримуючись єдиного правила: не можна класти більший диск на менший. У задачі необхідно перекласти усі диски на останній стержень, здійснивши найменшу кількість перекладувань. Легенда говорить, що десь у Тібеті є монастыр, у якому монахи невтомно переміщують диски зі стержня на стержень, розв'язуючи задачу для \textbf{64} дисків. Легенда говорить, що коли робота буде завершена, то настане кінець світу. Оскільки відомо, що для розв'язання задачі достатньо здійснити \textbf{2^N-1} перекладувань, нескладні обчислення показують, що світ ще деякий час побуде у безпеці. Проте нещодавні відкриття археологів показали, что справи можуть виявитись набагато гіршими. У манускрипті, знайденому в Тібеті, стверджується, що монахи розв'язували задачу не на \textbf{3}-х, а на \textbf{M} стержнях. Це дійсно виявилось проблемою, так як зі збільшенням числа стержнів кількість перекладувань згідно описаним правилам різко зменшується. Знайдіть кількість перекладувань, які необхідно здійснити для перекладування \textbf{N} дисків с першого стержня на останній, якщо у задачі наявні \textbf{M} стержнів, а також вкажіть порядок перекладування дисків. \InputFile Вхідні дані містять два числа \textbf{N} та \textbf{M} (\textbf{1} ≤ \textbf{N} ≤ \textbf{64}, \textbf{4} ≤ \textbf{M} ≤ \textbf{65}). \OutputFile У першому рядку виведіть кількість перекладувань L для розв'язання задачі. Наступні \textbf{L} рядків повинні містити самі перекладування. Кожен рядок має вид \textbf{move from to} якщо диск перекладується на порожні стержень або \textbf{move from to atop} якщо диск кладеться зверху на інший диск. Радіуси дисків змінюються від \textbf{1} до \textbf{N}, стержні пронумеровано від \textbf{1} до \textbf{M}.
Ліміт часу 1 секунда
Ліміт використання пам'яті 64 MiB
Вхідні дані #1
5 4
Вихідні дані #1
13
move 1 from 1 to 3
move 2 from 1 to 2
move 1 from 3 to 2 atop 2
move 3 from 1 to 4
move 4 from 1 to 3
move 3 from 4 to 3 atop 4
move 5 from 1 to 4
move 3 from 3 to 1
move 4 from 3 to 4 atop 5
move 3 from 1 to 4 atop 4
move 1 from 2 to 1
move 2 from 2 to 4 atop 3
move 1 from 1 to 4 atop 2
Автор Андрій Станкевич
Джерело Petrozavodsk Summer Trainings 2003, 2003-08-23