AT_c_league2026_1_a Polish and Slide

Description

$ N\times N $ のマスからなる盤面がある。 左上のマスの座標を $ (0,0) $ とし、そこから下に $ i $ マス、右に $ j $ マス進んだ位置のマスの座標を $ (i,j) $ とする。 あなたは初期位置 $ (i_0, j_0) $ におり、指定された目的地 $ (i_1, j_1), \dots, (i_{M-1}, j_{M-1}) $ をこの順番で訪れたい。 各ターンでは、以下のいずれかの行動を 1 つ選んで実行できる。 - **磨く:** 現在位置のマスをピカピカに磨き上げる。初期状態ではどのマスも磨かれていない。既に磨いたマスに対してこの操作を行っても何も変化しない。 - **滑る:** 上下左右の方向 $ d $ を指定し、盤面外に出ようとするか、磨かれていないマスに到達するまで、その方向への移動を繰り返す。より詳細には、以下の繰り返しを行う。 1. $ d $ 方向に隣接するマスが盤面外である場合、その場にとどまり繰り返しを終了する。 2. $ d $ 方向に隣接するマスが磨かれていない場合、隣接マスに移動して繰り返しを終了する。 3. $ d $ 方向に隣接するマスが磨かれている場合、隣接マスに移動して繰り返す。 ![example](https://cdn.luogu.com.cn/upload/vjudge_pic/AT_c_league2026_1_a/771e24768a76f158e726c69c5002523853c27fcf263cb39cb73569a9a428fbf2.gif) 「滑る」による移動中に、次に訪れるべき目的地のマスに到達した、または通過した場合、その時点でその目的地を訪れたものとみなす。同じ「滑る」の移動中に複数の目的地を指定された順番通りに通過した場合、それらはすべて訪れたものとみなされる。 一方、まだ訪れる順番ではない目的地のマスに到達した、または通過しても、その時点では訪れたものとはみなされない。その目的地を訪れる順番になった後に、改めてそのマスに到達するか通過する必要がある。 行動は最大で $ 10000 $ ターンまで行える。 できるだけ少ないターン数ですべての目的地を順に訪れるような行動列を求めよ。

Input Format

入力は以下の形式で標準入力から与えられる。 > $ N $ $ M $ $ i_0 $ $ j_0 $ $ \vdots $ $ i_{M-1} $ $ j_{M-1} $ - すべてのテストケースにおいて、 $ N=20 $ 、 $ M=100 $ で固定されている。 - 初期位置および目的地の座標 $ (i_k,j_k) $ は、 $ 0 \leq i_k, j_k \leq N-1 $ を満たす整数であり、すべて互いに異なる。

Output Format

各ターンの行動を、以下のようにアルファベット 1 文字で表す。 - **磨く:** `P` - **滑る:** 滑る方向に応じて、上:`U`、下:`D`、左:`L`、右:`R` ターン数を $ T $ 、 $ t $ ターン目の行動を表す文字を $ a_t $ としたとき、以下の形式で標準出力に出力せよ。 > $ a_0 $ $ \vdots $ $ a_{T-1} $ [例を見る](https://img.atcoder.jp/c-league2026-1/LG9EG0CV.html?lang=ja&seed=0&output=sample)

Explanation/Hint

### 得点 出力した行動列のターン数を $ T $ としたとき、 $ 10000-T $ の得点を得る。 すべての目的地を順に訪れることができなかった場合、WA となる。 テストケースは全部で 100 個あり、各テストケースの得点の合計が提出の得点となる。 1 つ以上のテストケースで不正な出力や制限時間超過をした場合、提出全体の判定が WA または TLE となる。 ### 入力生成方法 初期位置および目的地は、以下の手順に従って生成される。 まず、すべての $ N^2 $ 個のマスの座標をランダムな順序に並び替える。 並び替えた座標列のうち、先頭から $ M $ 個を順に $ (i_0,j_0), (i_1,j_1), \dots, (i_{M-1},j_{M-1}) $ として採用する。 ### ツール(入力ジェネレータ・ビジュアライザ) - [Web版](https://img.atcoder.jp/c-league2026-1/LG9EG0CV.html?lang=ja): ローカル版より高性能でアニメーション表示と手動プレイが可能です。 - [ローカル版](https://img.atcoder.jp/c-league2026-1/LG9EG0CV.zip): 使用するには[Rust言語](https://www.rust-lang.org/ja)のコンパイル環境をご用意下さい。 - [Windows用のコンパイル済みバイナリ](https://img.atcoder.jp/c-league2026-1/LG9EG0CV_windows.zip): Rust言語の環境構築が面倒な方は代わりにこちらをご利用下さい。 コンテスト期間中に、チーム外とのビジュアライズ結果の共有や、解法・考察に関する言及は禁止されています。ご注意下さい。