AT_utpc2025_h Heyawake-like Problem
Description
$ (3N+1) $ 行 $ (3N+1) $ 列のマス目があります。以下の条件を全て満たすように各マスを「黒」または「白」で塗ることが可能か判定し、可能であれば塗り方を $ 1 $ つ示してください。
- 異なる黒マスは**辺**を共有して接していない。
- 任意の黒マスを始点として、**角**を共有して接する黒マスに移動することを $ 0 $ 回以上繰り返すことで、マス目の外周と接している黒マスのいずれかに到達することができる。
- 白マスは全体で連結である。すなわち、任意の $ 2 $ つの白マスについて、**辺**を共有して接する白マスに移動することを $ 0 $ 回以上繰り返すことで、一方からもう一方へ到達することができる。
- ある $ 2 $ つの行には黒マスがちょうど $ N+1 $ 個ずつ存在する。それ以外の行には黒マスがちょうど $ N $ 個ずつ存在する。
- ある $ 2 $ つの列には黒マスがちょうど $ N+1 $ 個ずつ存在する。それ以外の列には黒マスがちょうど $ N $ 個ずつ存在する。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $
Output Format
条件を満たす塗り方が存在しない場合は、 $ 1 $ 行に `No` と出力せよ。そうでない場合、条件を満たす塗り方を以下の形式で出力せよ。上から $ i $ 行目、左から $ j $ 列目のマスが白なら $ a_{i,j} $ を `.` とし、黒なら `#` とせよ。
> Yes $ a_{1,1} \dots a_{1,3N+1} $ $ \vdots $ $ a_{3N+1,1} \dots a_{3N+1,3N+1} $
条件を満たす塗り方が複数存在する場合、どれを出力しても正答となる。
Explanation/Hint
### Sample Explanation 1
以下の $ 3 $ つの出力例は $ N=1 $ での出力形式に合致していますが、条件を満たしていないため不正解と判定されます。
```
Yes
##..
#...
...#
..##
```
```
Yes
#.#.
...#
#.#.
.#..
```
```
Yes
...#
.#..
..#.
#...
```
$ 1 $ つ目の例では、黒マスが辺を共有して接しています。
$ 2 $ つ目の例では、白マスが全体で連結ではありません。
$ 3 $ つ目の例では、黒マスの個数に関する条件を満たしていないほか、例えば上から $ 2 $ 行目、左から $ 2 $ 列目にある黒マスを始点として、角を共有して接する黒マスに移動することを繰り返しても、マス目の外周と接する黒マスに到達することはできません。
$ N=1 $ のとき、条件を満たす塗り方は存在しないことが証明できます。
### Constraints
- 入力は全て整数
- $ 1 \leq N \leq 500 $