#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, M;
        cin >> N >> M;
        long int lazarova[N][M];
        long int ugljesina[N][M];
        for(long int i = 0; i < N; i++)
        {
            for(long int j = 0; j < M; j++)
            {
                cin >> lazarova[i][j][t];
            }
        }
        for(long int i = 0; i < N; i++)
        {
            for(long int j = 0; j < M; j++)
            {
                cin >> ugljesina[i][j][t];
            }
        }
        for(long int i = 0; i < N; i++)
        {
            for(long int j = 0; j < M; 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; i++)
            {
                for(long int j = 0; j < M; j++)
                {
                    cout << ugljesina[i][j][t] << endl;
                }
            }
        }
        else(skup[t] = false)
        {
            cout << "NE";
        }
    }
    
}