[SNOI2019]积木
题号:NC50792
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

有一块n行m列的网格板,n,m都是奇数。网格上平铺着一些的积木。积木可以旋转,不能重叠。这些积木共有块,也就是说,网格板上只有一格的空位。
你可以做两种操作:
  1. 将一块与空白格相邻(指有公共边)的积木旋转到空白格中;
  2. 将一块与空白格相邻的积木平移至空白格中。
如图所示(被移动的积木颜色较浅):
blocks.png请你用以上两种操作将给定的网格板变换为指定的状态。

输入描述:

第一行两个正奇数n,m,分别表示网格的行数和列数。
接下来n行,每行m个字符,描述网格板的初始状态:
< 表示这个格子是一块积木的左半部分;
> 表示这个格子是一块积木的右半部分;
n 表示这个格子是一块积木的上半部分;
u 表示这个格子是一块积木的下半部分;
o 表示这个格子是空的。接下来另外n行,
每行m个字符,描述你需要将网格板变成的目标状态,格式同上。

输出描述:

你需要输出一个字符串,按顺序表示你的操作:
L 表示你移动了空白格左侧的积木;
R 表示你移动了空白格右侧的积木;
U 表示你移动了空白格上方的积木;
D 表示你移动了空白格下方的积木。
当然,没有操作的话输出空串就好了。
示例1

输入

复制
3 3
nnn
uuu
o<>
<>n
<>u
<>o

输出

复制
URLR
示例2

输入

复制
5 5
n<><>
un<>n
nuonu
u<>un
<><>u
<><>o
<><>n
<><>u
<><>n
<><>u

输出

复制
RLLRLRR

说明

初始状态和目标状态分别是题图中的网格A,B 。

备注:

对于所有数据,
对于的数据,
对于另外的数据,
对于另外的数据,m=3;
对于另外的数据,
对于另外的数据,
对于余下的数据,无特殊限制。