#include<iostream>#include<cmath>#include<cstring>#include<cstdio>#include<algorithm>
using namespace std;
const int maxn=1005;
int i,j,t,k,l,l1,x,y,r,b[maxn][maxn],a[maxn][maxn],c[maxn][maxn];
int d[maxn*maxn][2],n,m,n1,m1,p,q,num;
bool bz[maxn][maxn],bz1;
char ch[maxn];
int main(){
// freopen("data.in","r",stdin);
scanf("%d\n",&l1); while (l1){ l1--; scanf("%d%d%d%d\n",&n,&m,&n1,&m1); for (i=1;i<=n;i++){ scanf("%s\n",&ch); for (j=0;j<=m-1;j++) a[i][j+1]=ch[j]-48; }x=y=0;num=0; for (i=1;i<=n1;i++){ scanf("%s\n",&ch); for (j=0;j<m1;j++){ b[i][j+1]=ch[j]-48; if (b[i][j+1]){ if (!x && !y) x=i,y=j+1; d[++num][0]=i-x;d[num][1]=j+1-y; } } } bz1=true; for (i=1;i<=n;i++) for (j=1;j<=m;j++){ if (!bz1) break; if (!a[i][j]) continue; for (k=1;k<=num;k++){ a[i+d[k][0]][j+d[k][1]]--; if (a[i+d[k][0]][j+d[k][1]]<0){ bz1=false;break; } } if (!bz1) break; } if (!bz1) printf("NO\n"); else printf("YES\n"); }
}