#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<fstream>
#include<algorithm>
#include<string>
#include<stack>
#include<queue>
//#include<map>
#define PI acos(-1.0)
typedef long long LL;
const int MAX=0xfffffff;
using namespace std;
int n,m,t;
int x,y,z;
char map[3][12][12];
bool vis[3][12][12];
struct node {
int x,y,z,step;
};
node p,q;
int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
void bfs( )
{
memset(vis,0,sizeof(vis));
queue<node >Q;
q.x=0,q.y=0,q.z=0,q.step=0;
vis[q.x][q.y][q.z]=1;
Q.push(q);
while(!Q.empty())
{
q=Q.front(),Q.pop();
if(q.x==x&&q.y==y&&q.z==z&&q.step<=t)
{
printf("YES\n");
return;
}
if(q.step>t) break;
for(int i=0;i<4;i++)
{
p.x=q.x;
p.y=q.y+dir[i][0];
p.z=q.z+dir[i][1];
p.step=q.step+1;
if(p.y>=0&&p.y<n&&p.z>=0&&p.z<m&&!vis[p.x][p.y][p.z]&&map[p.x][p.y][p.z]!='*')
{
vis[p.x][p.y][p.z]=1;
if(map[p.x][p.y][p.z]=='#')
{
if(p.x==0) p.x=1;
else p.x=0;
if(map[p.x][p.y][p.z]=='#'||map[p.x][p.y][p.z]=='*'||vis[p.x][p.y][p.z]==1)
continue;
}
vis[p.x][p.y][p.z]=1;
Q.push(p);
}
}
}
printf("NO\n");
}
int main( )
{
//freopen("1.txt","r",stdin);
int ti;
while(scanf("%d",&ti)!=EOF)
{
while(ti--)
{
scanf("%d%d%d",&n,&m,&t);
for(int i=0;i<=1;i++)
for(int j=0;j<n;j++)
scanf("%s",map[i][j]);
for(int i=0;i<=1;i++)
for(int j=0;j<n;j++)
for(int k=0;k<m;k++)
{
if(map[i][j][k]=='P')
{
x=i;
y=j;
z=k;
}
}
bfs();
}
}
return 0;
}
#include<cmath>
#include<cstring>
#include<cstdio>
#include<fstream>
#include<algorithm>
#include<string>
#include<stack>
#include<queue>
//#include<map>
#define PI acos(-1.0)
typedef long long LL;
const int MAX=0xfffffff;
using namespace std;
int n,m,t;
int x,y,z;
char map[3][12][12];
bool vis[3][12][12];
struct node {
int x,y,z,step;
};
node p,q;
int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
void bfs( )
{
memset(vis,0,sizeof(vis));
queue<node >Q;
q.x=0,q.y=0,q.z=0,q.step=0;
vis[q.x][q.y][q.z]=1;
Q.push(q);
while(!Q.empty())
{
q=Q.front(),Q.pop();
if(q.x==x&&q.y==y&&q.z==z&&q.step<=t)
{
printf("YES\n");
return;
}
if(q.step>t) break;
for(int i=0;i<4;i++)
{
p.x=q.x;
p.y=q.y+dir[i][0];
p.z=q.z+dir[i][1];
p.step=q.step+1;
if(p.y>=0&&p.y<n&&p.z>=0&&p.z<m&&!vis[p.x][p.y][p.z]&&map[p.x][p.y][p.z]!='*')
{
vis[p.x][p.y][p.z]=1;
if(map[p.x][p.y][p.z]=='#')
{
if(p.x==0) p.x=1;
else p.x=0;
if(map[p.x][p.y][p.z]=='#'||map[p.x][p.y][p.z]=='*'||vis[p.x][p.y][p.z]==1)
continue;
}
vis[p.x][p.y][p.z]=1;
Q.push(p);
}
}
}
printf("NO\n");
}
int main( )
{
//freopen("1.txt","r",stdin);
int ti;
while(scanf("%d",&ti)!=EOF)
{
while(ti--)
{
scanf("%d%d%d",&n,&m,&t);
for(int i=0;i<=1;i++)
for(int j=0;j<n;j++)
scanf("%s",map[i][j]);
for(int i=0;i<=1;i++)
for(int j=0;j<n;j++)
for(int k=0;k<m;k++)
{
if(map[i][j][k]=='P')
{
x=i;
y=j;
z=k;
}
}
bfs();
}
}
return 0;
}