Unusual Matrix
You are given two binary square matrices $$$a$$$ and $$$b$$$ of size $$$n \times n$$$. A matrix is called binary if each of its elements is equal to $$$0$$$ or $$$1$$$. You can do the following operations on the matrix $$$a$$$ arbitrary number of times (0 or more):   vertical xor. You choose the number $$$j$$$ ($$$1 \le j \le n$$$) and for all $$$i$$$ ($$$1 \le i \le n$$$) do the following: $$$a_{i, j} := a_{i, j} \oplus 1$$$ ($$$\oplus$$$ — is the operation xor (exclusive or)).  horizontal xor. You choose the number $$$i$$$ ($$$1 \le i \le n$$$) and for all $$$j$$$ ($$$1 \le j \le n$$$) do the following: $$$a_{i, j} := a_{i, j} \oplus 1$$$. Note that the elements of the $$$a$$$ matrix change after each operation.For example, if $$$n=3$$$ and the matrix $$$a$$$ is: $$$$$$ \begin{pmatrix} 1 & 1 & 0 \\ 0 & 0 & 1 \\ 1 & 1 & 0 \end{pmatrix} $$$$$$ Then the following sequence of operations shows an example of transformations:   vertical xor, $$$j=1$$$. $$$$$$ a= \begin{pmatrix} 0 & 1 & 0 \\ 1 & 0 & 1 \\ 0 & 1 & 0 \end{pmatrix} $$$$$$  horizontal xor, $$$i=2$$$. $$$$$$ a= \begin{pmatrix} 0 & 1 & 0 \\ 0 & 1 & 0 \\ 0 & 1 & 0 \end{pmatrix} $$$$$$  vertical xor, $$$j=2$$$. $$$$$$ a= \begin{pmatrix} 0 & 0 & 0 \\ 0 & 0 & 0 \\ 0 & 0 & 0 \end{pmatrix} $$$$$$ Check if there is a sequence of operations such that the matrix $$$a$$$ becomes equal to the matrix $$$b$$$.
The first test case is explained in the statements.In the second test case, the following sequence of operations is suitable:   horizontal xor, $$$i=1$$$;  horizontal xor, $$$i=2$$$;  horizontal xor, $$$i=3$$$; It can be proved that there is no sequence of operations in the third test case so that the matrix $$$a$$$ becomes equal to the matrix $$$b$$$.
The first line contains one integer $$$t$$$ ($$$1 \leq t \leq 1000$$$) — the number of test cases. Then $$$t$$$ test cases follow.The first line of each test case contains one integer $$$n$$$ ($$$1 \leq n \leq 1000$$$) — the size of the matrices.The following $$$n$$$ lines contain strings of length $$$n$$$, consisting of the characters '0' and '1' — the description of the matrix $$$a$$$.An empty line follows.The following $$$n$$$ lines contain strings of length $$$n$$$, consisting of the characters '0' and '1' — the description of the matrix $$$b$$$.It is guaranteed that the sum of $$$n$$$ over all test cases does not exceed $$$1000$$$.
For each test case, output on a separate line:   "YES", there is such a sequence of operations that the matrix $$$a$$$ becomes equal to the matrix $$$b$$$;  "NO" otherwise. You can output "YES" and "NO" in any case (for example, the strings yEs, yes, Yes and YES will be recognized as positive).
import sys
sys.setrecursionlimit(10 ** 5)
int1 = lambda x: int(x) - 1
p2D = lambda x: print(*x, sep='\n')

def II():
    return int(sys.stdin.buffer.readline())

def MI():
    return map(int, sys.stdin.buffer.readline().split())

def LI():
    return list(map(int, sys.stdin.buffer.readline().split()))

def LLI(rows_number):
    return [LI() for _ in range(rows_number)]

def BI():
    return sys.stdin.buffer.readline().rstrip()

def SI():
    return sys.stdin.buffer.readline().rstrip().decode()
inf = 10 ** 16
md = 10 ** 9 + 7
for _ in range(II()):
    n = II()
    aa = [int(SI(), 2) for _ in range(n)]
    SI()
    for i in range(n):
        b = int(SI(), 2)
        aa[i] ^= b
    a0 = aa[0]
    full = (1 << n) - 1
    for a in aa:
        cur = a ^ a0
        if cur != 0 and cur != full:
            print('NO')
            break
    else:
        print('YES')
def main():
    for _ in range(int(input())):
        n = int(input())
        A = [int(input(), 2) for _ in range(n)]
        input()
        for (i, a) in enumerate(A):
            A[i] = a ^ int(input(), 2)
        b = A.pop()
        for a in A:
            if 0 != a ^ b != 2 ** n - 1:
                print('NO')
                break
        else:
            print('YES')
if __name__ == '__main__':
    main()
t = int(input())

def hori(arr, i, n):
    for j in range(n):
        arr[i][j] = '1' if arr[i][j] == '0' else '0'

def vert(arr, i, n):
    for j in range(n):
        arr[j][i] = '1' if arr[j][i] == '0' else '0'

def fun():
    n = int(input())
    arr = []
    arr2 = []
    for _ in range(n):
        temp = []
        temp.extend(input())
        arr.append(temp)
    _ = input()
    for i in range(n):
        temp = []
        temp.extend(input())
        arr2.append(temp)
    for i in range(n):
        if arr[0][i] != arr2[0][i]:
            vert(arr, i, n)
    for i in range(1, n):
        if arr[i][0] != arr2[i][0]:
            hori(arr, i, n)
    for i in range(n):
        for j in range(n):
            if arr[i][j] != arr2[i][j]:
                return False
    return True
for _ in range(t):
    if fun():
        print('YES')
    else:
        print('NO')