/
実行時間制限: 2 sec / メモリ制限: 1024 MiB
配点 : 100 点
問題文
H 行 W 列のマス目があります。上から i 行目、左から j 列目のマスをマス (i,j) と表します。
各マスは障害物が置かれたマスか、黒く塗られたマスか、白く塗られたマスのいずれかです。マスの状態は H 個の長さ W の文字列 S_1,S_2,\dots,S_H によって与えられ、S_i の j 文字目が # のときマス (i,j) には障害物が置かれていて、 B のときマス (i,j) は黒く、 W のときマス (i,j) は白く塗られています。
あなたは好きな 黒く塗られたマス を 1 つ選び、そこから移動を繰り返します。 1 回の移動で今いるマスから上下左右に隣接する、黒く塗られたマスか白く塗られたマスに移動することができます。
以下の条件を満たしながら 10^{100} 回移動することができるかどうか判定してください。
- x\ (1 \leq x \leq 10^{100}) 回目の移動の後にいるマスは、 x \equiv 0 \pmod K のとき黒く、 x \not\equiv 0 \pmod K のとき白く塗られている
制約
- H, W, K は整数
- 1 \leq H, W
- H \times W \leq 10^6
- 2 \leq K \leq 10^9
- S_i は
#,B,Wからなる長さ W の文字列 - S_1,S_2,\dots,S_H のうち少なくとも 1 つは
Bを含む
入力
入力は以下の形式で与えられる。
H W K S_1 S_2 \vdots S_H
出力
条件を満たしながら 10^{100} 回移動することができるなら Yes を、そうでないなら No を出力せよ。
入力例 1
2 4 5 BWW# W#BB
出力例 1
Yes
マス (1,1) を選び、移動を開始します。 (1,1) \rightarrow (1,2) \rightarrow (1,3) \rightarrow (1,2) \rightarrow (1,3) \rightarrow (2,3) \rightarrow (1,3) \rightarrow (1,2) \rightarrow (1,3) \rightarrow \cdots と移動していくと、条件を満たしながら 10^{100} 回移動することができます。
入力例 2
3 1 4 B W W
出力例 2
Yes
入力例 3
2 5 3 BWW## ##WWB
出力例 3
No