#include // #include using namespace std; // using bigint = boost::multiprecision::cpp_int; template using min_priority_queue = priority_queue,greater>; random_device seed_gen; mt19937 engine(seed_gen()); int64_t get_time_ns(){ struct::timespec t; clock_gettime(CLOCK_MONOTONIC, &t); return t.tv_sec * int64_t(1'000'000'000) + t.tv_nsec; } bool solve() { int h, w; cin >> h >> w; vector S(h); for(auto &s : S) cin >> s; int cnt = 0; for(auto &s : S) for(auto &c : s) if(c == '#') cnt++; if(cnt == 0 || cnt % 2 != 0) return false; for(int di = 0; di < h; di++) { for(int dj = -w; dj < w; dj++) { if(di == 0 && dj == 0) continue; auto T = S; for(int i = 0; i < h; i++) { for(int j = 0; j < w; j++) { int ii = i + di; int jj = j + dj; if(ii < 0 || h <= ii || jj < 0 || w <= jj) continue; if(T[i][j] == '#' && T[ii][jj] == '#') { T[i][j] = 'R'; T[ii][jj] = 'B'; } } } bool b = true; for(int i = 0; i < h; i++) { for(int j = 0; j < w; j++) { if(T[i][j] == '#') b = false; } } if(b) return b; if(0) { cout << di << " " << dj << endl; for(auto s : T) cout << s << endl; } } } return false; } int main() { bool ans = solve(); if(ans) cout << "YES" << endl; else cout << "NO" << endl; return 0; }