#include "bits/stdc++.h"
using namespace std;

string s[50];
bool f[26];
pair<int,int> tyouten[26][2];//最初に見つかった位置と最後に見つかった位置
int main()
{
	int d;
	int h,w;
	cin>>d;
	for(int cnt=0;cnt<d;cnt++)
	{
		cin>>h>>w;
		if(h==0)
			break;
		for(int i=0;i<h;i++)
			cin>>s[i];
		fill(f,f+26,true);
		fill(tyouten[0],tyouten[26],make_pair(-1,-1));
		//sを全走査して使われている文字を列挙する
		for(int i=0;i<h;i++)
		{
			for(int j=0;j<w;j++)
			{
				if(s[i][j]!='.')
				{
					if(f[s[i][j]-'A'])
					{
						f[s[i][j]-'A']=false;
						tyouten[s[i][j]-'A'][0]=make_pair(i,j);
						tyouten[s[i][j]-'A'][1]=make_pair(i,j);
					}else{
						tyouten[s[i][j]-'A'][0]=make_pair(min(tyouten[s[i][j]-'A'][0].first,i),min(tyouten[s[i][j]-'A'][0].second,j));
						tyouten[s[i][j]-'A'][1]=make_pair(max(tyouten[s[i][j]-'A'][1].first,i),max(tyouten[s[i][j]-'A'][1].second,j));
					}
				}
			}
		}
		//使われている文字から最初から長方形のものを探す
		bool ans=true;
		while(ans)
		{
			ans=false;
			for(int i=0;i<26;i++)
			{
				if(!f[i])
				{
					bool flag=true;
					//範囲を調べる
					for(int j=tyouten[i][0].first;j<tyouten[i][1].first+1;j++)
					{
						for(int k=tyouten[i][0].second;k<tyouten[i][1].second+1;k++)
						{
							if(!(s[j][k]=='A'+i || s[j][k]=='?'))
							{
								flag=false;
								break;
							}
						}
						if(!flag)
							break;
					}
					//無事長方形だったならその部分を?で埋める
					if(flag)
					{
						ans=true;
						f[i]=true;
						for(int j=tyouten[i][0].first;j<tyouten[i][1].first+1;j++)
						{
							for(int k=tyouten[i][0].second;k<tyouten[i][1].second+1;k++)
							{
								s[j][k]='?';
							}	
						}
					}	
				}
			}
		}
		//処理終わり
		ans=true;
		for(int i=0;i<26;i++)
		{
			if(!f[i])
				ans=false;
		}
		if(ans)
			cout<<"SAFE"<<endl;
		else
			cout<<"SUSPICIOUS"<<endl;
	}
	return 0;
}
