#include<bits/stdc++.h>
#define fs(i,x,y,z) for(int i=x;i<=y;i+=z)
#define ft(i,x,y,z) for(int i=x;i>=y;i+=z)
#define ll long long
#define ull unsigned long long
#define db double
#define ms(a,b) memset(a,b,sizeof(a))
#define sz(a) sizeof(a)
using namespace std;
const int rw[]={-1,0,1,0,-1,1,-1,1},cl[]={0,1,0,-1,-1,1,1,-1};
const int N=1001,inf=0x3f3f3f3f;
inline int read(){
int date=0,w=1;char c=0;
while(c<'0'||c>'9'){if(c=='-')w=-1;c=getchar();}
while(c>='0'&&c<='9'){date=date*10+c-'0';c=getchar();}
return date*w;
}
int n,a[N][N],b[N][N],c[N][N],transfer1[N];
char tmpa[N];
int mian(){
n=read();
fs(i,1,n,1){
scanf("%s",tmpa+1);
fs(j,1,n,1) a[i][j]=tmpa[j]-'0';
}
fs(i,1,n,1){
scanf("%s",tmpa+1);
fs(j,1,n,1) b[i][j]=tmpa[j]-'0';
}
fs(i,1,n,1) if(a[1][i]^b[1][i]) transfer1[i]=1;
fs(i,1,n,1) fs(j,1,n,1) a[i][j]^=transfer1[j];
bool able=0;
fs(i,1,n,1){
fs(j,2,n,1) if((a[i][j]^b[i][j])!=(a[i][j-1]^b[i][j-1])){
puts("NO");
able=1;
break;
}
if(able) break;
}
if(!able) puts("YES");
return 0;
}
int main(){
int t=read();while(t--) mian();
}