#include<bits/stdc++.h>
#define ll long long
#define uint unsigned int
#define ull unsigned long long
#define ushort unsigned short
#define MAX(x,y) ((x>y)?x:y)
#define MIN(x,y) ((x<y)?x:y)
#define SWAP(x,y) x^=y;y^=x;x^=y
#define I using
#define AK namespace
#define IOI std
#define ByKonnyaku41377 return 0
const int MAXN=1e6;
const ll MOD=1e9+7;
I AK IOI;
ll Abs(ll a) {return a>=0?a:(~a)+1;}
ll gcd(ll a, ll b){return b?gcd(b,a%b):a;}
ll lcm(ll a, ll b){return a/gcd(a,b)*b;}
double HAILUN(double a, double b, double c){double P=(a+b+c)/2; return sqrt(P*(P-a)*(P-b)*(P-c));}
ll Qpow(ll a, ll b) {ll base=a, re=1;while(b){if(b&1)re=(re*base)%MOD;base=(base*base)%MOD;b>>=1;}return re;}
ll Qtimes(ll a, ll b) {ll base=a, re=0;while(b){if(b&1)re=(re+base)%MOD;base=(base+base)%MOD;b>>=1;}return re;}
ll read() {ll x=0; bool f=1; char c=getchar();while(c>'9'||c<'0'){if(c=='-') f=0; c=getchar();}while(c<='9'&&c>='0')x=(x<<1)+(x<<3)+c-'0',c=getchar();return f?x:(~x)+1;}
void writ(ll x){if(x<0) {putchar('-');x=(~x)+1;}if(x>9)writ(x/10);putchar(x-x/10*10+48);}
int t;
int n, m;
int a[105][105];
int sz[105][105];
int b[105][105];
bool check(int k, int j) {
for(int i=1; i<=n; ++i) {
if(sz[i][k]!=b[i][j]) return 0;
} return 1;
}
bool chck(int l) {
for(int i=1; i<=n; ++i)
for(int j=1; j<=m; ++j)
sz[i][j]=a[i][j];
for(int i=1; i<=n; ++i) swap(sz[i][1], sz[i][l]);
for(int i=1; i<=n; ++i) {
if(sz[i][1]!=b[i][1]) {
for(int j=1; j<=m; ++j) sz[i][j]^=1;
}
}
for(int j=2; j<=m; ++j) {
bool flag=0;
for(int k=j; k<=m; ++k) {
if(check(k, j)) {
for(int i=1; i<=n; ++i) swap(sz[i][j], sz[i][k]);
flag=1; break;
}
}
if(!flag) return 0;
}
return 1;
}
int main(){
t=read();
while(t--) {
n=read(); m=read();
for(int i=1; i<=n; ++i)
for(int j=1; j<=m; ++j)
a[i][j]=read();
for(int i=1; i<=n; ++i)
for(int j=1; j<=m; ++j)
b[i][j]=read();
bool flag=0;
for(int i=1; i<=n; ++i) {
if(chck(i)) {
flag=1;
break;
}
}
if(flag) puts("YES");
else puts("NO");
}
ByKonnyaku41377;
}
https://www.luogu.com.cn/record/85655189