module main; // https://yukicoder.me/submissions/18400 より // 2次元グリッド import std; void main() { // 入力 int H, W; readln.chomp.formattedRead("%d %d", H, W); auto S = new string[](H); foreach (ref s; S) s = readln.chomp; // 答えの計算と出力 foreach (i; 0 .. H + 1) { foreach (j; -W .. W + 1) { if (i == 0 && j == 0) continue; auto check = new bool[][](H, W); bool ok = true; int count = 0; foreach (k; 0 .. H) { foreach (l; 0 .. W) { if (S[k][l] == '.' || check[k][l]) continue; count++; check[k][l] = true; int nk = k + i, nl = l + j; if (nk < 0 || H <= nk || nl < 0 || W <= nl) { ok = false; break; } if (S[nk][nl] == '#' && !check[nk][nl]) { check[nk][nl] = true; } else { ok = false; break; } } } if (count == 0) ok = false; if (ok) { writeln("YES"); return; } } } writeln("NO"); }