#include #include #include #include using namespace std; struct rect { char c; int top, buttom, left, right; rect() : c(0), top(50), buttom(0), left(50), right(0) {} }; int main() { int N; cin >> N; for (int l = 0; l < N; l++) { int h, w; cin >> h >> w; string pic[50]; rect r[7]; for (int i = 0; i < h; i++) { cin >> pic[i]; for (int j = 0; j < w; j++) { if (!isalpha(pic[i][j])) continue; for (int k = 0; k < 7; k++) { if (!r[k].c) { r[k].c = pic[i][j]; r[k].top = r[k].buttom = i; r[k].left = r[k].right = j; break; } else if (r[k].c == pic[i][j]) { r[k].top = min(i, r[k].top); r[k].buttom = max(i, r[k].buttom); r[k].left = min(j, r[k].left); r[k].right = max(j, r[k].right); break; } } } } for (int k = 0; r[k].c && k < 7; k++) { for (int i = r[k].top; i <= r[k].buttom; i++) { for (int j = r[k].left; j <= r[k].right; j++) { if (pic[i][j] == '.') { goto sus; } } } } { bool checked[7] = {false}; while(1) { bool flag[7] = {false}; for (int k = 0; r[k].c && k < 7; k++) { if (checked[k]) { continue; } flag[k] = true; for (int i = r[k].top; i <= r[k].buttom; i++) { for (int j = r[k].left; j <= r[k].right; j++) { if (r[k].c != pic[i][j] && pic[i][j] != '?') { flag[k] = false; } } } if (flag[k]) { checked[k] = true; // cout << r[k].c << endl << r[k].top << " " << r[k].buttom << " "<< r[k].left << " " << r[k].right << endl; for (int i = r[k].top; i <= r[k].buttom; i++) { for (int j = r[k].left; j <= r[k].right; j++) { pic[i][j] = '?'; } } break; } } bool hoge = false; for (int k = 0; r[k].c && k < 7; k++) { if (flag[k]) { hoge = true; } } if (!hoge) { break; } } bool hogehoge = false; for (int k = 0; r[k].c && k < 7; k++) { if (!checked[k]) { hogehoge = true; } } if (hogehoge) { goto sus; } } cout << "SAFE" << endl; continue; sus: cout << "SUSPICIOUS" << endl; } return 0; }