AT_c_league2026_2_a Slide into Place

Description

$ N\times N $ マスの盤面がある。 左上のマスの座標を $ (0,0) $ とし、そこから下方向に $ i $ マス、右方向に $ j $ マス進んだ先のマスの座標を $ (i,j) $ とする。 最初、すべてのマスは空である。 各マスには、駒を置きたい目標マスであるかどうかが指定されている。 あなたは、次の操作を $ N^2 $ 回以下行うことができる。 盤面の上下左右いずれかの辺と、その辺に対応する行または列を選び、盤外から駒を $ 1 $ 個入れる。 駒を最初に入れるマスを入口と呼ぶ。 各方向の入口と駒の進行方向は以下の通りである。 選ぶ辺 行または列 入口 進行方向 左 行 $ i $ $ (i,0) $ 右 右 行 $ i $ $ (i,N-1) $ 左 上 列 $ j $ $ (0,j) $ 下 下 列 $ j $ $ (N-1,j) $ 上 入口に既に駒がある操作は行えない。 駒は入口から進行方向へまっすぐ進み、次のマスに既に駒があるか、次のマスが盤外であるとき、現在のマスで停止して固定される。 進行方向に対して横に隣接するマスに駒があっても停止しない。 固定された駒を動かしたり、取り除いたりすることはできない。 各操作は、入れた駒が固定された後に次の操作へ進む。 目標マスに置かれた駒を増やし、それ以外のマスに置かれた駒を抑えて、得点ができるだけ高くなるような操作列を求めよ。 #### 操作の例 説明のため、 $ N=4 $ の盤面での操作例を示す。 実際の入力では $ N=30 $ である。 水色のマスは目標マス、緑の駒は目標マスに置かれた駒、赤の駒はそれ以外のマスに置かれた駒を表す。 図中の $ t $ は操作回数、駒の数字は入れた順番であり、紫の矢印と輪は直前の駒の進路と停止位置を表す。 ![初期状態と3回の操作後の盤面](https://cdn.luogu.com.cn/upload/vjudge_pic/AT_c_league2026_2_a/944621cb084eac18f876317109d8b509664f7b097dc49667f823333ab770585d.svg)初期状態と3回の操作後の盤面 1. 左から行 $ 1 $ へ駒を入れると、盤面の端の $ (1,3) $ で停止する。 2. 上から列 $ 2 $ へ駒を入れると、 $ (3,2) $ で停止する。 途中で $ (1,3) $ の駒の横を通るが、停止しない。 3. 下から列 $ 3 $ へ駒を入れると、 $ (1,3) $ の駒の手前の $ (2,3) $ で停止する。 この後、右から行 $ 1 $ へ駒を入れる操作は、入口 $ (1,3) $ に既に駒があるため行えない。

Input Format

入力は以下の形式で標準入力から与えられる。 > $ N $ $ s_0 $ $ \vdots $ $ s_{N-1} $ 各値は以下の制約を満たす。 - $ N=30 $ - $ s_i $ は長さ $ N $ の文字列であり、各文字は `o` または `.` である。 $ s_i $ の $ j $ 文字目はマス $ (i,j) $ が目標マスであるかどうかを表し、`o` なら目標マス、`.` ならそれ以外のマスである。 ここで、文字列の文字の位置も $ 0 $ 始まりとする。

Output Format

以下の形式で標準出力に出力せよ。 > $ d_0 $ $ k_0 $ $ \vdots $ $ d_{K-1} $ $ k_{K-1} $ ここで、 $ K $ は出力する操作の回数であり、 $ N^2 $ 以下でなければならない。 各 $ t=0,\ldots,K-1 $ について、 $ d_t $ と $ k_t $ は $ t $ 番目の操作を表す整数であり、 $ 0\leq d_t\leq 3 $ 、 $ 0\leq k_t

Explanation/Hint

### 得点 すべての操作を終えたとき、駒が置かれていない目標マスの個数を $ E $ 、目標マス以外に置かれた駒の個数を $ B $ とする。 このとき、以下の得点が得られる。 \\\[ S=N^2-E-B+1 \\\] 上の例で $ 3 $ 回の操作を終えた時点では、 $ E=2 $ 、 $ B=1 $ なので、得点は $ 4^2-2-1+1=14 $ となる。 合計で 100 個のテストケースがあり、各テストケースの得点の合計が提出の得点となる。 一つ以上のテストケースで不正な出力や制限時間超過をした場合、提出全体の判定が WA や TLE となり、提出の得点は 0 点となる。 コンテスト時間中に得た最高得点で最終順位が決定され、コンテスト終了後のシステムテストは行われない。 同じ得点を複数の参加者が得た場合、提出時刻に関わらず同じ順位となる。 ### 入力生成方法 $ N=30 $ とする。 実数 $ p $ を区間 $ [0.35,0.65] $ から一様ランダムに選ぶ。 各マスを互いに独立に確率 $ p $ で目標マスとし、それ以外のマスは目標マスでないものとする。 ### ツール(入力ジェネレータ・ビジュアライザ) - [Web版](https://img.atcoder.jp/c-league2026-2/RqpYgVXL.html?lang=ja): ローカル版より高性能でアニメーション表示と手動プレイが可能です。 - [ローカル版](https://img.atcoder.jp/c-league2026-2/RqpYgVXL.zip): 使用するには[Rust言語](https://www.rust-lang.org/ja)のコンパイル環境をご用意下さい。 コンパイルが通らない場合は `rustup update` をお試し下さい。 - [Windows用のコンパイル済みバイナリ](https://img.atcoder.jp/c-league2026-2/RqpYgVXL_windows.zip): Rust言語の環境構築が面倒な方は代わりにこちらをご利用下さい。 コンテスト期間中に、チーム外とのビジュアライズ結果の共有や、解法・考察に関する言及は禁止されています。 ご注意下さい。