Задача №111867. 38 попугаев (С)
Как-то раз удав, слонёнок, мартышка и попугай играли в замечательную игру <<змейка>>.
Суть этой известной игры в следующем. Удав перемещается по прямоугольному полю, не переползая через самого себя, и ест яблоки, которые ему сверху скидывает попугай.
Как известно, измерять длину удава можно в слонятах, мартышках или попугаях. Но в попугаях удав выходит гора-а-а-здо длиннее, поэтому мы остановимся на них в качестве единицы измерения. Поле представляет собой прямоугольную сетку из \)10\( строк по \)10\( ячеек размером \)1\( попугай \)\times\( \)1\( попугай. Изначально длина удава составляет всего три попугая (каким образом удав становится таким коротким в начале игры - долгая и запутанная история, поэтому мы не будем на ней останавливаться в рамках этой задачи), он занимает три крайних левых ячейки в верхней строке поля и смотрит направо. Каждый раз, съедая яблоко, удав удлиняется на одного попугая и занимает, таким образом, ещё одну клетку поля.
Более формально, удав длины \)L\( попугаев представляет собой последовательность из \)L\( различных клеток поля \)A_1, A_2, \ldots, A_L\( таких, что любые две соседние в этой последовательности клетки \)A_i\( и \)A_{i+1}\( являются соседними на поле, т.е. имеют общую сторону. Головой удава считается клетка \)A_L\(. За один ход удав может продвинуться на одну клетку: он выбирает новую клетку \)H\( для своей головы (естественно, смежную с текущей клеткой головы \)A_L\( и не выходящую за границы поля), а его хвост подтягивается следом на одну клетку. То есть, после хода удав будет представлять собой последовательность из клеток \)A_2, A_3, \ldots, A_L, H\(. Обратите внимание, по определению выше удав после выполнения хода не должен дважды содержать одну и ту же клетку, но новое положение головы \)H\( вполне может совпадать со старым положением хвоста \)A_1\( (наш удав перемещается подобно гусенице, сначала сжимаясь и подтягивая хвост, а потом разжимаясь и продвигая голову, поэтому это корректный ход).
Заметим, что из этого определения сразу следует, что в каждый момент времени у удава есть возможность пойти в не более чем трёх направлениях - продолжить движение в направлении, куда смотрит его голова, свернуть налево или свернуть направо.
Перед каждым ходом удава на поле находится ровно одно яблоко. Каждый раз, когда удав съедает яблоко, его длина увеличивается на одного попугая. Это происходит следующим образом: удав делает ход, и если после этого в какой-нибудь из клеток удава (т.е. из клеток \)A_2, A_3, \ldots, A_L, H\( в обозначениях выше) оказывается яблоко, оно считается съеденным (как именно удав может есть яблоки любой частью своего тела - не менее запутанная история, чем объяснение таким скромным размерам удава в начале игры, поэтому её мы также опустим). Если яблоко было съедено, то оно продвигается по телу удава вплоть до бывшего положения хвоста (т.е. до клетки \)A_1\(), и на этом месте возникает новая клетка удава. Таким образом, удав приобретает длину в \)(L + 1)\( попугай и занимает к началу следующего хода клетки (\)A_1, A_2, \ldots A_K, H\(). В этот же момент попугай скидывает следующее яблоко на поле. Обратите внимание, что если удав ест яблоко, то в этом случае он уже не имеет права выбирать в качестве нового положения головы \)H\( старую клетку своего хвоста, потому что тогда к началу следующего хода она будет дважды встречаться в теле удава, что недопустимо!
Удав проигрывает, если он делает некорректный ход. Некто (не будем говорить, кто, хотя это был слонёнок) рассказал вам, в какие клетки поля и в каком порядке попугай собирается скидывать яблоки. Помогите удаву построить выигрышную стратегию перемещения!
В первой строке ввода записано натуральное число \)K\( - количество яблок, которое скинет попугай на поле. Длина удава не превзойдёт \)38\( попугаев, т.е. \)K + 3 \le 38\(.
В каждой из последующих \)K\( строк задано по два целых числа \)R_i, C_i\( (\)1 \le R_i, C_i \le 10\()- номера строки и столбца, куда попугай скинет \)i\(-е яблоко. Строки нумеруются с \)1\( по \)10\( сверху вниз, столбцы нумеруются с \)1\( по \)10\( слева направо. Позиции, где возникают яблоки, могут повторяться.
Сначала выведите целое число \)T\( - количество ходов, которое потребуется удаву, чтобы съесть все яблоки.
Во второй строке выведите строку, задающую последовательность ходов удава, состоящую из \)T\( латинских букв 'R', 'U', 'L', 'D', обозначающих, что на очередном ходу клетка головы удава смещается соответственно вверх, вправо, влево или вниз.
Будет зачтена любая последовательность ходов, которая не приводит к проигрышу удава, по итогам которой все яблоки будут съедены, и длина \)T\( которой не превосходит \)10\,000\( в целях экономии времени играющих. Жюри гарантирует, что при данных ограничениях задачу всегда возможно решить.
Пояснение к первому тесту. Положение удава по ходу игры показано ниже.
Пояснение ко второму тесту. Второе яблоко выпадает прямо на удава, и сразу оказывается съеденным, т.е. перед вторым ходом удав состоит из клеток \)(1, 1), (1, 2), (1, 3), (2, 3)\(, а после второго хода - из клеток \)(1, 1), (1, 2), (1, 3), (2, 3), (3, 3)\(. Также обратите внимание, что после шестого хода происходит ситуация, проиллюстрированная в условии: в качестве нового положения головы выбирается клетка \)(2, 3)$, являющаяся на тот момент клеткой хвоста.
3 3 3 4 6 1 3
16 DDDRRRUUULLLLDRD
4 2 3 1 2 3 5 2 2
8 DDRRULLL