#include <bits/stdc++.h>
using namespace std;
long long mod(long long a, long long b) {
  return a >= 0 ? a % b : (b + a % b) % b;
}
long long dceil(long long a, long long b) { return (a + b - 1) / b; }
char tab[50][50];
bool checkRow(int i, int s, int e) {
  for (int j = s; j <= e; j++) {
    if (tab[i][j] != 'B') return false;
  }
  return true;
}
bool checkCol(int j, int s, int e) {
  for (int i = s; i <= e; i++) {
    if (tab[i][j] != 'B') return false;
  }
  return true;
}
bool connected(int i, int j, int x, int y) {
  if (checkCol(j, min(i, x), max(i, x)) && checkRow(x, min(j, y), max(j, y)))
    return true;
  if (checkRow(i, min(j, y), max(j, y)) && checkCol(y, min(i, x), max(i, x)))
    return true;
  return false;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int n, m;
  cin >> n >> m;
  for (int i = 0; i < n; i++) {
    string s;
    cin >> s;
    for (int j = 0; j < m; j++) {
      tab[i][j] = s[j];
    }
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      for (int x = i; x < n; x++) {
        for (int y = 0; y < m; y++) {
          if (x == i && y <= j) continue;
          if (tab[i][j] == 'B' && tab[x][y] == 'B' && !connected(i, j, x, y)) {
            cout << "NO\n";
            return 0;
          }
        }
      }
    }
  }
  cout << "YES\n";
  return 0;
}
