#include <bits/stdc++.h>
using namespace std;
int n, m, b[101][101];
bool isHorrizontal() {
  int i, j;
  for (i = 0; i < n / 3; i++) {
    for (j = 0; j < m; j++) {
      if (b[i][j] != 1) return false;
    }
  }
  for (i = n / 3; i < (n - n / 3) / 2 + (n / 3); i++) {
    for (j = 0; j < m; j++) {
      if (b[i][j] != 2) return false;
    }
  }
  for (i = (n - n / 3) / 2 + (n / 3); i < n; i++) {
    for (j = 0; j < m; j++) {
      if (b[i][j] != 3) return false;
    }
  }
  return true;
}
bool isVertical() {
  int i, j;
  for (i = 0; i < n; i++) {
    for (j = 0; j < m / 3; j++) {
      if (b[i][j] != 1) return false;
    }
  }
  for (i = 0; i < n; i++) {
    for (j = m / 3; j < (m - m / 3) / 2 + (m / 3); j++) {
      if (b[i][j] != 2) return false;
    }
  }
  for (i = 0; i < n; i++) {
    for (j = (m - m / 3) / 2 + (m / 3); j < m; j++) {
      if (b[i][j] != 3) return false;
    }
  }
  return true;
}
int main() {
  int i, j, c = 0, tmp = 0;
  scanf("%d %d", &n, &m);
  char a;
  map<char, int> mp;
  for (i = 0; i < n; i++) {
    for (j = 0; j < m; j++) {
      scanf(" %c", &a);
      if (!mp.count(a)) {
        tmp++;
        mp[a] = tmp;
      }
      b[i][j] = mp[a];
      if (b[i][j] == 3) c = 1;
    }
  }
  if (c == 1) {
    if (n % 3 == 0 || m % 3 == 0) {
      if (n % 3 == 0 && isHorrizontal())
        puts("YES");
      else if (m % 3 == 0 && isVertical())
        puts("YES");
      else
        puts("NO");
    } else
      puts("NO");
  } else
    puts("NO");
  return 0;
}
