//开始时不是wa就是re,做出来之后疯狂的交了五六次
#include<stdio.h>
#include<string.h>
int n,m,k,maze[200][200],vis[200][200];
int dx[]={-1,1,0,0},dy[]={0,0,-1,1};//UDLR
int x1,y1,x2,y2;
typedef struct
{
int x,y,count;
}node;
node q[200001];
int bfs()
{
int i,rear,front;
node a,b;
a.x=x1;
a.y=y1;
a.count=-1;
rear=front=0;
q[rear++]=a;
while(rear>front)
{
a=q[front++];
for(i=0;i<4;i++)
{
b.x=a.x+dx[i];
b.y=a.y+dy[i];
while(b.x>=0&&b.x<n &&b.y>=0&&b.y<m&&maze[b.x][b.y]==0)
{
if(vis[b.x][b.y]==0)
{
vis[b.x][b.y]=1;
b.count=a.count+1;
if(b.count>k) return 0;
if(b.x==x2&&b.y==y2) return 1;
q[rear++]=b;
}
b.x+=dx[i];
b.y+=dy[i];
}
}
}
return 0;
}
main()
{
int i,j,t;
char str[200];
//freopen("D:\\o.txt","r",stdin);
scanf("%d",&t);
while(t--)
{
memset(vis,0,sizeof(vis));
scanf("%d%d",&n,&m);
getchar();
for(i=0;i<n;i++)
{
gets(str);
for(j=0;j<m;j++)
{
if(str[j]=='*')
maze[i][j]=1;
else maze[i][j]=0;
}
}
scanf("%d%d%d%d%d",&k,&y1,&x1,&y2,&x2);
x1--;y1--;
x2--;y2--;
if(bfs())
printf("yes\n");
else
printf("no\n");
}
return 0;
}
#include<stdio.h>
#include<cstring>
#include<iostream>
#include<vector>
#include<cmath>
#include<set>
#include<queue>
#include<map>
#include<utility>
#include<string>
#include<algorithm>
#define LL __int64
#define MOD 1000000007
#define M 100010
using namespace std;
int n,m,ok;
int x11,y11,x22,y22,k;
int dx[]={-1,1,0,0},dy[]={0,0,-1,1};
char s[110][110];
int vis[110][110];
int dist[110][110];
int q[100010][2];
int bfs()
{
int front=0,rear=0;
//vis[x11][y11]=1;
dist[x11][y11]=-1;
q[rear][0]=x11;
q[rear++][1]=y11;
while(rear>front)
{
int x=q[front][0],y=q[front][1];
front++;
for(int i=0;i<4;i++)
{
int xx=x+dx[i],yy=y+dy[i];
while(xx>=0&&yy>=0&&xx<n&&yy<m&&s[xx][yy]=='.')
{
if(vis[xx][yy]==0)
{
vis[xx][yy]=1;
dist[xx][yy]=dist[x][y]+1;
if(dist[xx][yy]>k)return 0;
if(xx==x22&&yy==y22)return 1;
//printf("%d %d\n",xx,yy);
q[rear][0]=xx;
q[rear++][1]=yy;
}
xx+=dx[i];
yy+=dy[i];
}
}
}
return 0;
}
int main()
{
int i,j,z,T;
//freopen("D:\\o.txt","r",stdin);
scanf("%d",&T);
while(T--)
{
memset(vis,0,sizeof(vis));
scanf("%d%d",&n,&m);
getchar();
for(i=0;i<n;i++)
gets(s[i]);
scanf("%d%d%d%d%d",&k,&y11,&x11,&y22,&x22);
y11--;x11--;y22--;x22--;
if(bfs())puts("yes");
else puts("no");
}
return 0;
}
#include<stdio.h>
#include<cstring>
#include<iostream>
#include<vector>
#include<cmath>
#include<set>
#include<queue>
#include<map>
#include<utility>
#include<string>
#include<algorithm>
#define LL __int64
#define MOD 1000000007
#define M 100010
using namespace std;
int n,m,ok;
int x11,y11,x22,y22,k;
int dx[]={-1,1,0,0},dy[]={0,0,-1,1};//U D L R
char s[110][110];
int vis[110][110];
int dist[110][110];
int q[100010][2];
void bfs()
{
int front=0,rear=0,i,j,d;
q[rear][0]=x11;
q[rear++][1]=y11;
//q[rear++]=x11*n+y11;
//vis[x11][y11]=1;
dist[x11][y11]=-1;
while(rear>front)
{
//int x=q[front]/n,y=q[front]%n;
//printf("%d %d\n",x,y);
/*if(x==x22&&y==y22&&dist[x][y]<=k){
ok=1;
return;
}*/
int x=q[front][0],y=q[front][1];
front++;
for(i=0;i<4;i++)
{
for(j=1;;j++)
{
int xx=x+dx[i]*j,yy=y+dy[i]*j;
if(xx<0||yy<0||xx>=n||yy>=m)break;
if(s[xx][yy]=='*')break;
if(vis[xx][yy])continue;
dist[xx][yy]=dist[x][y]+1;
if(dist[xx][yy]>k)return ;
if(xx==x22&&yy==y22)
{
ok=1;
return ;
}
vis[xx][yy]=1;
q[rear][0]=xx;
q[rear++][1]=/*xx*n+*/yy;
//printf("dist %d %d %d\n",dist[xx][yy],xx,yy);
}
}
}
}
int main()
{
int i,j,z,T;
///freopen("D:\\o.txt","r",stdin);
scanf("%d",&T);
while(T--)
{
ok=0;
memset(vis,0,sizeof(vis));
scanf("%d%d",&n,&m);
getchar();
for(i=0;i<n;i++)
gets(s[i]);
scanf("%d%d%d%d%d",&k,&y11,&x11,&y22,&x22);
y11--;x11--;y22--;x22--;
//vis[x11][y11]=0;
bfs();
if(ok)puts("yes");
else puts("no");
}
return 0;
}