#include <iostream>
using namespace std;
int main(int argc, char** argv) {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	long long int t;
	cin >>t;
	for(int z=0;z<t;z++)
	{
		long long int n,m;
		cin >>n>>m;
		long long int vece[n][m];
		for(long long int i=0;i<n;i++)
		{
			for(long long int j=0;j<m;j++)
			{
				cin >>vece[i][j];
			}
		}
		long long int manje[n][m];
		for(long long int i=0;i<n;i++)
		{
			for(long long int j=0;j<m;j++)
			{
				cin >>manje[i][j];
			}
		}
		
		long long int matrix[n][m];
		for(long long int i=0;i<n;i++)
		{
			for(long long int j=0;j<m;j++)
			{
				matrix[i][j]=0;
			}
		}
		
		bool moze=true;
		
		for(long long int i=0;i<n;i++)
		{
			for(long long int j=0;j<m;j++)
			{
				if(!(vece[i][j]<=matrix[i][j] && manje[i][j]>=matrix[i][j]))
				{
					long long int pom;
					if(!(vece[i][j]<=matrix[i][j]))
					{
						pom=vece[i][j]-matrix[i][j];
					}
					else
					{
						pom=manje[i][j]-matrix[i][j];
					}
					
					bool y=true,x=true;
					for(long long int i2=0;i2<n;i2++)
					{
						if(!(vece[i2][j]<=matrix[i2][j]+pom && manje[i2][j]>=matrix[i2][j]+pom))
						{
							y=false;
							break;
						}
					}
					for(long long int j2=0;j2<m;j2++)
					{
						if(!(vece[i][j2]<=matrix[i][j2]+pom && manje[i][j2]>=matrix[i][j2]+pom))
						{
							x=false;
							break;
						}
					}
					
					if(y)
					{
						for(long long int i2=0;i2<n;i2++)
						{
							matrix[i2][j]+=pom;
						}
					}
					else if(x)
					{
						for(long long int j2=0;j2<m;j2++)
						{
							matrix[i][j2]+=pom;
						}
					}
					else
					{
						moze=false;
						i=n;
						break;
					}
					
				}
				
			}
		}
		
		
		
		
		if(moze)
		{
			cout <<"DA\n";
			for(long long int i=0;i<n;i++)
			{
				for(long long int j=0;j<m;j++)
				{
					cout <<matrix[i][j]<<" ";
				}
				cout <<"\n";
			}
		}
		else
		{
			cout <<"NE\n";
		}
	}
	
	return 0;
}