На складе есть робот и \(n\) посылок, которые он хочет собрать. Склад можно представить в виде координатной сетки. Изначально робот находится в точке \((0, 0)\). \(i\)-я посылка находится в точке \((x_i, y_i)\). Гарантируется, что в одной точке не могут находиться две посылки. Также гарантируется, что в точке \((0, 0)\) посылки нет.
Робот наполовину сломан и может передвигаться только вверх ('U') и вправо ('R'). Другими словами, за один шаг робот может переместиться из точки \((x, y)\) в точку (\(x + 1, y\)) или в точку \((x, y + 1)\). Как сказано выше, робот хочет собрать все \(n\) посылок (в любом порядке). Он хочет сделать это за минимально возможное число шагов. Если существует несколько подходящих последовательностей шагов, робот хочет выбрать лексикографически минимальный путь.
Строка \(s\) длины \(n\) лексикографически меньше, чем строка \(t\) длины \(n\) если существует такой индекс \(1 \le j \le n\), что для всех \(i\) от \(1\) до \(j-1\) \(s_i = t_i\) и \(s_j < t_j\). Это обычное сравнение строк, например, в словаре строки расположены в лексикографическом порядке. Большинство языков программирования сравнивают строки именно так.
Выходные данные
Для каждого набора входных данных выведите ответ.
Если невозможно собрать все \(n\) посылок в каком-либо порядке, стартуя из точки (\(0,0\)), выведите «NO» первой строкой.
Иначе выведите «YES» первой строкой. Затем выведите кратчайший путь (строку), состоящий из символов 'R' и 'U'. Среди всех таких путей нужно выбрать лексикографически минимальный.
Заметьте, что в этой задаче «YES» и «NO» могут быть выведены только в верхнем регистре, то есть «Yes», «no» и «YeS» не принимаются.
Примечание
Для первого набора данных из указанного примера оптимальный путь RUUURRRRUU выглядит следующим образом:
Примеры
| № | Входные данные | Выходные данные |
|
1
|
3 5 1 3 1 2 3 3 5 5 4 3 2 1 0 0 1 1 4 3
|
YES
RUUURRRRUU
NO
YES
RRRRUUU
|