Петя работает над очень большим проектом. Проект содержит N файлов. В процессе работы Пете часто приходится просматривать и редактировать файлы. Для ускорения работы Петя использует файловый менеджер Fur
Manager, который отображает список имен файлов проекта в некотором порядке.
В текущей версии Fur Manager’a для перемещения по списку имен файлов есть следующие возможности:
-
можно нажать клавишу вниз, при этом курсор перемещается на следующий файл в списке, для последнего файла следующим считается первый;
-
можно нажать клавишу вверх, при этом курсор перемещается на предыдущий файл в списке, для первого файла предыдущим считается последний;
-
можно нажать клавишу Alt и, удерживая ее, набрать последовательность латинских букв. После этого клавишу Alt следует отпустить, и в этот момент курсор переместится на ближайший
файл, имя которого начинается c заданной последовательности символов. Ближайший файл — это файл, на который можно переместиться за наименьшее количество нажатий клавиши вниз. Если заданная последовательность
является началом имени текущего файла, или файла, имя которого начинается с этой последовательности, не существует, то курсор останется на месте.
Первая и вторая из описанных возможностей файлового менеджера требуют по одному нажатию клавиши, а третья — одного нажатия (нажатие клавиши Alt) плюс количество нажатий, равное длине набранной последовательности
латинских букв.
Файлы пронумерованы от 1 до N в порядке их следования. После загрузки Fur Manager’а курсор находится на первом файле.
Петя знает, что ему сначала придется редактировать файл с номером a1, затем с номером a2 и так далее, а последним — файл с номером ak. В последовательности a1, a2,
..., ak один и тот же номер может встречаться несколько раз. При каждом перемещении от одного файла к другому Петя хочет нажимать как можно меньше клавиш.
Требуется написать программу, которая выдает искомую последовательность нажатий клавиш.
Выходные данные
Выведите описание искомой последовательности нажатий клавиш в виде k блоков информации:
- первый блок информации описывает перемещение от файла с номером 1 к файлу с номером a1;
- второй блок информации описывает перемещение от файла с номером a1 к файлу с номером a2;
- …
- k-ый блок информации описывает перемещение от файла с номером ak–1 к файлу с номером ak.
Каждый блок информации выглядит следующим образом.
В первой строке блока записывается число L — наименьшее количество нажатий клавиш, необходимое для перемещения от очередного файла последовательности к следующему.
Следующие L строк блока описывают нажимаемые клавиши. Каждая из строк содержит описание одной клавиши:
- если нажимается клавиша вниз, то в строке записывается слово down;
- если нажимается клавиша вверх, то в строке записывается слово up;
- если нажимается клавиша Alt, то в строке записывается слово Alt;
- при нажатии клавиши с латинской буквой выводится соответствующая ей латинская буква.
Если существует несколько оптимальных способов перемещения, то требуется вывести любой из них.
Система оценки
- Подзадача 1. Решения, верно работающие при \(n \leqslant 30\), оцениваются в 28 баллов. Баллы ставятся при прохождении всех тестов.
- Подзадача 2. Решения, верно работающие при больших ограничениях, оцениваются по 4 балла за тест..