M - Take K 解説 /

実行時間制限: 2 sec / メモリ制限: 1024 MiB

配点 : 100

問題文

HW 列のマス目があります。上から i 行目、左から j 列目のマスをマス (i,j) と表します。

各マスは障害物が置かれたマスか、黒く塗られたマスか、白く塗られたマスのいずれかです。マスの状態は H 個の長さ W の文字列 S_1,S_2,\dots,S_H によって与えられ、S_ij 文字目が # のときマス (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