#include <iostream>

using namespace std;

int main()
{   long int T;
    bool skup[T];
    cin >> T;
    for(long int t = 0; t < T; t++)
    {
        long int N[t], M[t], x, y;
        cin >> N[t] >> M[t];
        long int lazarova[N[t]][M[t]][T];
        long int ugljesina[N[t]][M[t]][T];
        for(long int i = 0; i < N[t]; i++)
        {
            for(long int j = 0; j < M[t]; j++)
            {
                cin >> lazarova[i][j][t];
            }
        }
        for(long int i = 0; i < N[t]; i++)
        {
            for(long int j = 0; j < M[t]; j++)
            {
                cin >> ugljesina[i][j][t];
            }
        }
        for(long int i = 0; i < N[t]; i++)
        {
            for(long int j = 0; j < M[t]; j++)
            {
                x = ugljesina[i][j][t];
                y = ugljesina[i + 1][j + 1][t];
                skup[t] = true;
                if(ugljesina[i][j][t] == lazarova[i][j][t] && ugljesina[i + 1][j + 1][t] == lazarova[i + 1][j + 1][t] && (ugljesina[i + 1][j][t] == lazarova[i + 1][j][t]||ugljesina[i][j + 1][t] == lazarova[i][j + 1][t]) && ((x - y) - ugljesina[i + 1][j][t] % 2 == 0 || (x - y) - ugljesina[i][j + 1][t])) 
                {
                    skup[t] = false;
                }
            }
        }
        
    }
    for(long int t = 0; t < T; t++)
    {
        if(skup[t] = true)
        {
            cout << "DA";
            for(long int i = 0; i < N[t]; i++)
            {
                for(long int j = 0; j < M[t]; j++)
                {
                    cout << ugljesina[i][j][t] << endl;
                }
            }
        }
        else(skup[t] = false)
        {
            cout << "NE";
        }
    }
    
}