#include<bits/stdc++.h>
using namespace std;
///左上右下四个方向(-1,0),(0,-1),(1,0),(0,1)
int dx[] = {-1,0,1,0};
int dy[] = {0,-1,0,1};
char mp[510][510];///地图
int vis[510][510];///标记是否走过
int n,m;
int flag;///是否能到达终点
void dfs(int x,int y)///深度优先搜索
{
vis[x][y] = 1;///标记为走过的点
if(mp[x][y]=='t')flag = 1;///到达终点
for(int i=0;i<4;i++){
int xx = x + dx[i];///下一步的x坐标
int yy = y + dy[i];///下一步的y坐标
if(xx<1||xx>n||yy<1||yy>m)continue;///地图范围外
if(mp[xx][yy]=='x'||vis[xx][yy])continue;///障碍物或者走过的点
dfs(xx,yy);///递归
}
}
int main()
{
int t;
cin>>t;///输入数据组数
while(t--){
flag = 0;///初始化
memset(vis,0,sizeof(vis));///初始化
cin>>n>>m;///输入地图的长与宽
int ox,oy;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
cin>>mp[i][j];///输入地图
if(mp[i][j]=='s'){///起始点坐标
ox = i;
oy = j;
}
}
dfs(ox,oy);///将起始点坐标先放入
if(flag==1)///是否能到达终点
cout<<"YES"<<endl;///注意输出细节
else
cout<<"NO"<<endl;///注意输出细节
}
return 0;
}
///完美结束ヾ(◍°∇°◍)ノ゙