#include <bits/stdc++.h>
using namespace std;
using ll = long long;
bool ok(vector<string> v){
int n = v.size();
int m = v[0].size();
for(int i = 0; i < n; i++){
for(int j = 1; j < m; j++){
if(v[i][j] != v[i][j-1]) return 0;
}
}
vector<char> v1;
vector<int> w;
for(int i = 0; i < n; i++){
if(i == 0 || v[i][0] != v[i-1][0]){
v1.push_back(v[i][0]);
w.push_back(1);
} else w.back()++;
}
if(v1.size() != 3) return 0;
if(w[0] != w[1] || w[1] != w[2]) return 0;
set<char> s(v1.begin(), v1.end());
if(s.size() != 3) return 0;
return 1;
}
vector<string> trans(vector<string> v){
vector<string> res;
int n = v.size(), m = v[0].size();
for(int j = 0; j < m; j++){
string cur;
for(int i = 0; i < n; i++){
cur += v[i][j];
}
res.push_back(cur);
}
return res;
}
int main() {
int n, m;
cin >> n >> m;
vector<string> v(n);
for(string &x : v) cin >> x;
if(ok(v) || ok(trans(v))) cout << "YES";
else cout << "NO";
return 0;
}
1141B - Maximal Continuous Rest | 1341A - Nastya and Rice |
1133A - Middle of the Contest | 385A - Bear and Raspberry |
1311B - WeirdSort | 1713F - Lost Array |
236B - Easy Number Challenge | 275A - Lights Out |
147A - Punctuation | 253A - Boys and Girls |
1327E - Count The Blocks | 984A - Game |
12B - Correct Solution | 1355B - Young Explorers |
485A - Factory | 628A - Tennis Tournament |
1436B - Prime Square | 1707B - Difference Array |
1422C - Bargain | 1611F - ATM and Students |
660A - Co-prime Array | 1692F - 3SUM |
1470A - Strange Birthday Party | 190D - Non-Secret Cypher |
1721B - Deadly Laser | 1721C - Min-Max Array Transformation |
1721A - Image | 1180C - Valeriy and Deque |
557A - Ilya and Diplomas | 1037D - Valid BFS |