#include<bits/stdc++.h>
using namespace std;
inline int read(){
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')f=-1;
ch=getchar();
}
while(ch>='0' && ch<='9')x=x*10+ch-'0',ch=getchar();
return x*f;
}
struct node{
int x,y,z,time;
};
char a[3][33][33];
bool vis[3][33][33];
int n,m,t;
int d[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
void bfs(){
queue<node>q;
node cur,tip;
tip.x=tip.y=tip.z=tip.time=0;
q.push(tip);
vis[tip.x][tip.y][tip.z]=1;
while(!q.empty()){
cur=q.front();
q.front();
for(int i=0;i<4;++i){
int x=cur.x,y=cur.y+d[i][0],z=cur.z+d[i][1];
if(y>=0&&y<n&&z>=0&&z<m&&!vis[x][y][z]&&a[x][y][z]!='*'){
tip.x=x,tip.y=y,tip.z=z;
if(a[tip.x][tip.y][tip.z]=='#'){
vis[tip.x][tip.y][tip.z]=1;
if(tip.x==0)tip.x=1;
else tip.x=0;
}
vis[x][y][z]=1;
tip.time=1+cur.time;
if(tip.time>t){
puts("NO");
return;
}
else if(a[tip.x][tip.y][tip.z]=='P'){
puts("YES");
return;
}
q.push(tip);
}
}
}
puts("NO");
}
int main(){
int c=read();
while(c--){
n=read(),m=read(),t=read();
for(int i=0;i<2;++i)for(int j=0;j<n;++j)for(int k=0;k<m;++k)a[i][j][k]=read();
for(int i=0;i<n;++i)
for(int j=0;j<m;++j){
if(a[0][i][j]=='#'&&a[1][i][j]=='#')a[0][i][j]=a[1][i][j]='*';
else if(a[0][i][j]=='#'&&a[1][i][j]=='*')a[0][i][j]=a[1][i][j]='*';
else if(a[0][i][j]=='*'&&a[1][i][j]=='#')a[0][i][j]=a[1][i][j]='*';
}
memset(vis,0,sizeof(vis));
bfs();
}
}
tlequq