#include <iostream>
#include <vector>
using namespace std;
bool checkPairs(vector<string>& grid, int n, int m) {
// Check horizontal pairs
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 vertical pairs
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;
}
}
}
// Check diagonal pairs
for (int i = 0; i < n - 1; ++i) {
for (int j = 0; j < m - 1; ++j) {
if (grid[i][j] != grid[i + 1][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 possible = checkPairs(grid, n, m);
if (possible) {
cout << "YES" << endl;
} else {
cout << "NO" << endl;
}
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKYm9vbCBjaGVja1BhaXJzKHZlY3RvcjxzdHJpbmc+JiBncmlkLCBpbnQgbiwgaW50IG0pIHsKICAgIC8vIENoZWNrIGhvcml6b250YWwgcGFpcnMKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKSB7CiAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBtIC0gMTsgKytqKSB7CiAgICAgICAgICAgIGlmIChncmlkW2ldW2pdICE9IGdyaWRbaV1baiArIDFdKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAvLyBDaGVjayB2ZXJ0aWNhbCBwYWlycwogICAgZm9yIChpbnQgaiA9IDA7IGogPCBtOyArK2opIHsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG4gLSAxOyArK2kpIHsKICAgICAgICAgICAgaWYgKGdyaWRbaV1bal0gIT0gZ3JpZFtpICsgMV1bal0pIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIC8vIENoZWNrIGRpYWdvbmFsIHBhaXJzCiAgICBmb3IgKGludCBpID0gMDsgaSA8IG4gLSAxOyArK2kpIHsKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG0gLSAxOyArK2opIHsKICAgICAgICAgICAgaWYgKGdyaWRbaV1bal0gIT0gZ3JpZFtpICsgMV1baiArIDFdKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gdHJ1ZTsKfQoKaW50IG1haW4oKSB7CiAgICBpbnQgdDsKICAgIGNpbiA+PiB0OwoKICAgIHdoaWxlICh0LS0pIHsKICAgICAgICBpbnQgbiwgbTsKICAgICAgICBjaW4gPj4gbiA+PiBtOwogICAgICAgIHZlY3RvcjxzdHJpbmc+IGdyaWQobik7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyArK2kpIHsKICAgICAgICAgICAgY2luID4+IGdyaWRbaV07CiAgICAgICAgfQoKICAgICAgICBib29sIHBvc3NpYmxlID0gY2hlY2tQYWlycyhncmlkLCBuLCBtKTsKCiAgICAgICAgaWYgKHBvc3NpYmxlKSB7CiAgICAgICAgICAgIGNvdXQgPDwgIllFUyIgPDwgZW5kbDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBjb3V0IDw8ICJOTyIgPDwgZW5kbDsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDA7Cn0K
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