#include <iostream>
#include <vector>
using namespace std;
bool checkAdjacentPairs(vector<string>& grid, int n, int m) {
// Check horizontally
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m - 1; ++j) {
if (grid[i][j] != grid[i][j + 1]) {
return false;
}
}
}
// Check vertically
for (int j = 0; j < m; ++j) {
for (int i = 0; i < n - 1; ++i) {
if (grid[i][j] != grid[i + 1][j]) {
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 possible = checkAdjacentPairs(grid, n, m);
if (possible) {
cout << "YES" << endl;
} else {
cout << "NO" << endl;
}
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKYm9vbCBjaGVja0FkamFjZW50UGFpcnModmVjdG9yPHN0cmluZz4mIGdyaWQsIGludCBuLCBpbnQgbSkgewogICAgLy8gQ2hlY2sgaG9yaXpvbnRhbGx5CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkgewogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbSAtIDE7ICsraikgewogICAgICAgICAgICBpZiAoZ3JpZFtpXVtqXSAhPSBncmlkW2ldW2ogKyAxXSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgLy8gQ2hlY2sgdmVydGljYWxseQogICAgZm9yIChpbnQgaiA9IDA7IGogPCBtOyArK2opIHsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG4gLSAxOyArK2kpIHsKICAgICAgICAgICAgaWYgKGdyaWRbaV1bal0gIT0gZ3JpZFtpICsgMV1bal0pIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiB0cnVlOwp9CgppbnQgbWFpbigpIHsKICAgIGludCB0OwogICAgY2luID4+IHQ7CgogICAgd2hpbGUgKHQtLSkgewogICAgICAgIGludCBuLCBtOwogICAgICAgIGNpbiA+PiBuID4+IG07CiAgICAgICAgdmVjdG9yPHN0cmluZz4gZ3JpZChuKTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkgewogICAgICAgICAgICBjaW4gPj4gZ3JpZFtpXTsKICAgICAgICB9CgogICAgICAgIGJvb2wgcG9zc2libGUgPSBjaGVja0FkamFjZW50UGFpcnMoZ3JpZCwgbiwgbSk7CgogICAgICAgIGlmIChwb3NzaWJsZSkgewogICAgICAgICAgICBjb3V0IDw8ICJZRVMiIDw8IGVuZGw7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgY291dCA8PCAiTk8iIDw8IGVuZGw7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAwOwp9Cg==
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