#include <iostream>
#include <vector>
using namespace std;
bool checkRectangles(vector<string>& grid, int n, int m) {
for (int i = 0; i < n - 1; ++i) {
for (int j = 0; j < m - 1; ++j) {
if (grid[i][j] != grid[i + 1][j] && grid[i][j] != grid[i][j + 1]) {
return false;
}
}
}
return true;
}
int main() {
int t;
cin >> t;
while (t--) {
int n, m;
cin >> n >> m;
vector<string> grid(n);
for (int i = 0; i < n; ++i) {
cin >> grid[i];
}
bool allSameColor = true;
for (int i = 0; i < n - 1 && allSameColor; ++i) {
for (int j = 0; j < m - 1 && allSameColor; ++j) {
if (grid[i][j] != grid[i + 1][j] || grid[i][j] != grid[i][j + 1]) {
allSameColor = false;
}
}
}
if (allSameColor || checkRectangles(grid, n, m)) {
cout << "YES" << endl;
} else {
cout << "NO" << endl;
}
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKYm9vbCBjaGVja1JlY3RhbmdsZXModmVjdG9yPHN0cmluZz4mIGdyaWQsIGludCBuLCBpbnQgbSkgewogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuIC0gMTsgKytpKSB7CiAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBtIC0gMTsgKytqKSB7CiAgICAgICAgICAgIGlmIChncmlkW2ldW2pdICE9IGdyaWRbaSArIDFdW2pdICYmIGdyaWRbaV1bal0gIT0gZ3JpZFtpXVtqICsgMV0pIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiB0cnVlOwp9CgppbnQgbWFpbigpIHsKICAgIGludCB0OwogICAgY2luID4+IHQ7CgogICAgd2hpbGUgKHQtLSkgewogICAgICAgIGludCBuLCBtOwogICAgICAgIGNpbiA+PiBuID4+IG07CiAgICAgICAgdmVjdG9yPHN0cmluZz4gZ3JpZChuKTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkgewogICAgICAgICAgICBjaW4gPj4gZ3JpZFtpXTsKICAgICAgICB9CgogICAgICAgIGJvb2wgYWxsU2FtZUNvbG9yID0gdHJ1ZTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG4gLSAxICYmIGFsbFNhbWVDb2xvcjsgKytpKSB7CiAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbSAtIDEgJiYgYWxsU2FtZUNvbG9yOyArK2opIHsKICAgICAgICAgICAgICAgIGlmIChncmlkW2ldW2pdICE9IGdyaWRbaSArIDFdW2pdIHx8IGdyaWRbaV1bal0gIT0gZ3JpZFtpXVtqICsgMV0pIHsKICAgICAgICAgICAgICAgICAgICBhbGxTYW1lQ29sb3IgPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKGFsbFNhbWVDb2xvciB8fCBjaGVja1JlY3RhbmdsZXMoZ3JpZCwgbiwgbSkpIHsKICAgICAgICAgICAgY291dCA8PCAiWUVTIiA8PCBlbmRsOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGNvdXQgPDwgIk5PIiA8PCBlbmRsOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMDsKfQo=
OAoyIDEKVwpCCjYgNgpXV1dXQlcKV0JXV1dXCkJCQldXVwpCV1dXQkIKV1dCV0JCCkJCQldCVwoxIDEKVwoyIDIKQkIKQkIKMyA0CkJXQlcKV0JXQgpCV0JXCjQgMgpCQgpCQgpXVwpXVwo0IDQKV1dCVwpCQldCCldXQkIKQkJCQgoxIDUKV0JCV0IK
8
2 1
W
B
6 6
WWWWBW
WBWWWW
BBBWWW
BWWWBB
WWBWBB
BBBWBW
1 1
W
2 2
BB
BB
3 4
BWBW
WBWB
BWBW
4 2
BB
BB
WW
WW
4 4
WWBW
BBWB
WWBB
BBBB
1 5
WBBWB