The Unstoppable Robot

迷路を移動できるロボットを開発している学生たちがいました。しかし、このロボットには欠点があり、いったん動き始めると、壁や障害物にぶつかるまで方向転換や停止ができません。そのため、ロボットが動き始めると、今向いている方向の一番近い壁に到達してから、次の進む方向を選ぶ必要があります。
このロボットが、スタート位置の S からゴール位置の E まで移動する際に必要な最小の移動回数を求め、そのために送信するコマンド列を出力してください。コマンドは以下のとおりです:
  • L - 左に進む
  • U - 上に進む
  • R - 右に進む
  • D - 下に進む

Input

入力の最初の行には、グリッドの高さと幅を表す 2 つの数値 hw (2 ≤ h, w ≤ 100) が与えられます。
続く h 行には、幅 w 文字で構成されるグリッドが与えられます:
  • . は床を表します
  • # は壁を表します
  • S はスタート地点を表します
  • E はゴール地点を表します
また、ロボットがグリッドの外に出ないよう、周囲がすべて壁で囲まれていることが保証されています。

Output

プログラムは、スタート地点からゴール地点に到達するまでに必要な最小の移動回数を、最初の行に出力します。続く行には、ロボットに送るコマンド列を出力してください。可能な解答が複数ある場合は、いずれかを出力すれば構いません。
もしゴール地点まで到達できない場合は、Impossible と出力してください。

Examples

Input

7 9
#########
#.......#
#.S.....#
#.......#
#.#E....#
#.#.....#
#########
Output

4
RDLU
 
Hint
スタート地点を床 (.) として扱い、ゴール地点を壁 (#) として扱う方法があります。
 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue