#include <bits/stdc++.h>
using namespace std;
int m, n;
struct haha {
  int x;
  int y;
} ha[3000];
int a[55][55];
char op[101];
int main() {
  char t;
  while (scanf("%d%d", &m, &n) != EOF) {
    int count = 0, flag, cou = 0;
    memset(a, 0, sizeof(a));
    getchar();
    for (int i = 1; i <= m; i++) {
      scanf("%s", op);
      for (int j = 1; j <= n; j++) {
        t = op[j - 1];
        if (t == 'B') {
          a[i][j] = 1;
          ha[count].x = i;
          ha[count++].y = j;
        }
      }
    }
    for (int i = 0; i < count - 1; i++) {
      flag = 0;
      for (int j = i + 1; j < count && flag == 0; j++) {
        flag = 1;
        if (ha[i].x == ha[j].x) {
          for (int k = ha[i].y; k <= ha[j].y; k++) {
            if (a[ha[i].x][k] == 0) {
              break;
            } else if (k == ha[j].y) {
              flag = 0;
            }
          }
        } else if (flag && ha[i].y > ha[j].y) {
          if (flag) {
            for (int k = ha[i].x; k <= ha[j].x; k++) {
              if (a[k][ha[i].y] == 0) {
                break;
              } else if (k == ha[j].x) {
                flag = 2;
              }
            }
            for (int k = ha[j].y; k <= ha[i].y && flag == 2; k++) {
              if (a[ha[j].x][k] == 0) {
                break;
              } else if (k == ha[i].y) {
                flag = 0;
              }
            }
          }
          if (flag) {
            flag = 1;
            for (int k = ha[i].x; k <= ha[j].x; k++) {
              if (a[k][ha[j].y] == 0) {
                break;
              } else if (k == ha[j].x) {
                flag = 2;
              }
            }
            for (int k = ha[j].y; k <= ha[i].y && flag == 2; k++) {
              if (a[ha[i].x][k] == 0) {
                break;
              } else if (k == ha[i].y) {
                flag = 0;
              }
            }
          }
        } else if (flag && ha[i].y == ha[j].y) {
          for (int k = ha[i].x; k <= ha[j].x; k++) {
            if (a[k][ha[j].y] == 0) {
              break;
            } else if (k == ha[j].x) {
              flag = 0;
            }
          }
        } else if (flag && ha[i].y < ha[j].y) {
          if (flag) {
            flag = 1;
            for (int k = ha[i].x; k <= ha[j].x; k++) {
              if (a[k][ha[i].y] == 0) {
                break;
              } else if (k == ha[j].x) {
                flag = 2;
              }
            }
            for (int k = ha[i].y; k <= ha[j].y && flag == 2; k++) {
              if (a[ha[j].x][k] == 0) {
                break;
              } else if (k == ha[j].y) {
                flag = 0;
              }
            }
          }
          if (flag) {
            flag = 1;
            for (int k = ha[i].x; k <= ha[j].x; k++) {
              if (a[k][ha[j].y] == 0) {
                break;
              } else if (k == ha[j].x) {
                flag = 2;
              }
            }
            for (int k = ha[i].y; k <= ha[j].y && flag == 2; k++) {
              if (a[ha[i].x][k] == 0) {
                break;
              } else if (k == ha[j].y) {
                flag = 0;
              }
            }
          }
        }
      }
      if (flag == 0) {
        cou++;
      }
    }
    if (cou == count - 1 || count == 1) {
      printf("YES\n");
    } else {
      printf("NO\n");
    }
  }
  return 0;
}
