#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define For(i,a,b,c) for(ll i=a;i<b;i+=c)
#define For2(i,a,b,c) for(ll i=a;i>=b;i-=c)
#define vec_ll vector<vector<ll>>
#define vec_pr vector<pair<ll,ll>>
#define pr pair<ll,ll>
#define pbk push_back
#define mkpr make_pair
#define fst first
#define snd second

void print(ll *arr, ll n){
    For(i,0,n,1)cout<<arr[i]<<" ";
    cout<<endl;
}


bool s_sec(const pair<ll,ll> &a, const pair<ll,ll> &b) {
    return (a.second < b.second);
}

ll fast_expo(ll a, ll p){
    //cout<<a<<" ";
    ll x=p-2;
    ll curr=a;
    ll ans=1;
    while(x!=0){
        if(x%2==1){
            ans=(ans*curr)%p;
        }
        x/=2;
        curr=(curr*curr)%p;
    }
    return ans;
}

bool solve(vec_ll &mat_xor, ll n){
    bool horiz=true, vert=true;

    For(i,0,n,1){
        ll sum=0, sum2=0;

        For(j,0,n,1){
            sum+=mat_xor[i][j];
            sum2+=mat_xor[j][i];
        }

        if(n>sum && sum>0){
            horiz=false;
        }

        if(n>sum2 && sum2>0){
            vert=false;
        }
    }

    if(horiz==true || vert==true){
        return true;
    }
    else{
        ll arr1[n][n];

        bool poss=true;
        For(i,0,n,1){
            arr1[0][i]=mat_xor[0][i];
        }

        ///First check whether arr1 can be made equal to mat_xor
        For(i,1,n,1){
            arr1[i][0]=mat_xor[i][0];
            ll temp=(arr1[i][0]+mat_xor[0][0])%2;

            For(j,1,n,1){
                arr1[i][j]=(arr1[0][j] xor temp);
            }
        }

        For(i,0,n,1){
            For(j,0,n,1){
                poss = poss && (arr1[i][j] == mat_xor[i][j]);
            }
        }

        return poss;
    }
}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    /*ll T,p=1000000007;
    cin>>T;

    ll fact[1001],inverse[1001];
    fact[0]=fact[1]=inverse[0]=inverse[1]=1;

    For(i,2,1001,1){
        fact[i]=(fact[i-1]*i)%p;
        inverse[i]=fast_expo(fact[i],p);
    }*/

    ll T;
    cin>>T;

    while(T--){
        ll n;
        cin>>n;

        string a[n],b[n];

        ///
        For(i,0,n,1){
            cin>>a[i];
        }

        ///
        For(i,0,n,1){
            cin>>b[i];
        }

        vec_ll mat_xor;
        For(i,0,n,1){
            vector<ll> temp;
            For(j,0,n,1){
                temp.pbk((a[i][j]-'0' + b[i][j]-'0')%2);
            }
            mat_xor.pbk(temp);
        }

        bool poss=solve(mat_xor,n);
        if(poss==true){
            cout<<"YES\n";
        }
        else{
            cout<<"NO\n";
        }
    }
}
