#include <bits/stdc++.h>
using namespace std;
int w, h;
char g[100][100], d[100][100];
bool use[100][100];
int dx[] = {-1, 0, 1, 0};
int dy[] = {0, -1, 0, 1};
bool is_valid(int y, int x) { return 0 <= y && y < h && 0 <= x && x < w; }
bool check() {
  for (int i = 0; i < h; i++) {
    for (int j = 0; j < w; j++) {
      if (g[i][j] == 'B' && !use[i][j]) return true;
    }
  }
  return false;
}
void dfs(int y, int x, int dir, bool can) {
  if (!is_valid(y, x)) return;
  if (g[y][x] == 'W') return;
  use[y][x] = true;
  if (!can)
    dfs(y + dy[dir], x + dx[dir], dir, can);
  else {
    dfs(y + dy[dir], x + dx[dir], dir, can);
    for (int i = 0; i < 4; i++) {
      if (i == dir) continue;
      dfs(y + dy[i], x + dx[i], i, false);
    }
  }
  return;
}
int main() {
  cin >> h >> w;
  for (int i = 0; i < h; i++) {
    for (int j = 0; j < w; j++) {
      cin >> g[i][j];
      d[i][j] = g[i][j];
    }
  }
  for (int i = 0; i < h; i++) {
    for (int j = 0; j < w; j++) {
      memset(use, 0, sizeof(use));
      if (g[i][j] == 'W') continue;
      for (int k = 0; k < 4; k++) {
        dfs(i, j, k, true);
      }
      if (check()) {
        cout << "NO" << endl;
        return 0;
      }
    }
  }
  cout << "YES" << endl;
  return 0;
}
