#include<iostream>

using namespace std;
int mo[300][300];bool prviput;
void povecajRed(int n,int m){
for(int i=0;i<m;i++){
    mo[n][i]++;
}
}
void smanjiKolonu(int n,int m){
for(int i=0;i<n;i++){
    mo[i][m]--;
}
}
bool uporedi(int n,int m){
for(int i=0;i<n;i++){
    for(int j=0;j<m;j++){
        if(mo[i][j]!=0)return true;
    }
}
return false;
}
bool proveri(int n,int m,int l[300][300],int u[300][300]){
bool resen=true;
for(int i=0;i<n;i++){
    for(int j=0;j<m;j++){
        if(!(l[i][j]<=mo[i][j]&&mo[i][j]<=u[i][j])){
            resen=false;
        }
        if(!uporedi(n,m)&&prviput){
            return false;
        }
        if(l[i][j]>mo[i][j]&&u[i][j]<mo[i][j]){
            povecajRed(i,m);
            smanjiKolonu(n,j);
            prviput=true;
            return proveri(n,m,l,u);
        }
        if(l[i][j]>mo[i][j]){
            povecajRed(i,m);
            prviput=true;
            return proveri(n,m,l,u);
        }
        if(u[i][j]<mo[i][j]){
            smanjiKolonu(n,j);
            prviput=true;
            return proveri(n,m,l,u);
        }
    }
}
}
void resenje(int n,int m,int l[300][300],int u[300][300]){
prviput=false;
for(int i=0;i<n;i++){
    for(int j=0;j<m;j++){
        mo[i][j]=0;
    }
}
if(proveri(n,m,l,u)){
    cout<<"DA"<<endl;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            cout<<mo[i][j]<<" ";
        }
        cout<<endl;
    }
}
else{
    cout<<"NE";
}
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int t,n,m;
cin>>t;
int l[300][300],u[300][300];
for(int k=0;k<t;k++){
    cin>>n>>m;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            int x;
            cin>>x;
            l[i][j]=x;
        }
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            int x;
            cin>>x;
            u[i][j]=x;
        }
    }
    resenje(n,m,l,u);
}
return 0;
}