#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll mod=998244353;
bool a[1005][1005];
ll cntn[1005][1005];
//ll cntm[1005][1005];
int mxm[1005][1005];
int mxn[1005][1005];
ll sum[1005][1005];
int main(){
	//freopen("plant2.in","r",stdin);
	//freopen("plant.out","w",stdout);
	int T,id;
	scanf("%d%d",&T,&id);
	while(T--){
		//memset(a,0,sizeof(a));
		memset(cntn,0,sizeof(cntn));
		memset(mxn,0,sizeof(mxn));
		memset(mxm,0,sizeof(mxm));
		//memset(cntm,0,sizeof(cntm));
		int n,m,c,f;
		ll ansc=0,ansf=0;
		scanf("%d%d%d%d",&n,&m,&c,&f);
//		if(c==0&&f==0){
//			printf("%d %d\n",ansc,ansf);
//			continue;
//		}
		//cout<<n<<" "<<m<<endl;
		if(f==0) ansf=-1;
		for(int i=1;i<=n;i++){
			
			for(int j=1;j<=m;j++){
				char c;
				//c=getchar();
				//scanf("%s",&c);
				cin>>c;
				a[i][j]=c-'0';
			}
		}
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				cntn[i][j]=cntn[i-1][j]+a[i][j];
			}
		}
		for(int i=1;i<=n;i++){
			for(int j=m;j>=1;j--){
				if(!a[i][j]){
					mxm[i][j]=max(j,mxm[i][j+1]);
				}
			}
		}
		for(int j=1;j<=m;j++){
			for(int i=n;i>=1;i--){
				if(!a[i][j]){
					mxn[i][j]=max(i,mxn[i+1][j]);
				}
			}
		}
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				sum[i][j]=mxm[i][j]+sum[i-1][j];
			}
		}
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				cout<<mxn[i][j]<<" "; 
			}
			cout<<endl;
		}
//		cout<<endl<<endl;
//		for(int i=1;i<=n;i++){
//			for(int j=1;j<=m;j++){
//				cout<<sum[i][j]<<" "; 
//			}
//			cout<<endl;
//		}
//		for(int i=1;i<=n;i++){
//			for(int j=1;j<=m;j++){
//				cout<<cntn[i][j]<<" ";
//			}
//			cout<<endl;
//		}
//		for(int i=1;i<=n;i++){
//			for(int j=1;j<=m;j++){
////				if(a[i][j]==0) cntm[i][j]=cntm[i][j-1]+1;
////				else cntm[i][j]=0;
//				cntm[i][j]=cntm[i][j-1]+a[i][j];
//			}
//		}
//		for(int i=1;i<=n;i++){
//			for(int j=1;j<=m;j++){
//				cout<<cntm[i][j]<<" ";
//			}
//			cout<<endl;
//		}
		for(int k=1;k<=m;k++){
			int i=1;
			while(i<=n){
				//cout<<mxn[i][k]<<endl;
				//return 0;
				if(mxn[i][k]==i){
					i++;
					continue;
				}
				ll cnt1=0,cnt2=0,cnt3=0;
				int j=mxn[i][k];
				//cout<<j<<endl;
				//cout<<i<<" "<<j<<endl;
				int p=sum[j][k]-sum[i][k];
				//cout<<sum[i][k]<<"------------"<<sum[j][k];
				//cout<<p<<endl;
				//return 0;
				cnt1=p*mxm[i][k]%mod;
				cnt3=cnt3=mxn[j][k]-j;
				ansc=(ansc+cnt1)%mod;
				ansf=(ansf+p*cnt3)%mod;
				i=j+1;
			}
		}
		printf("%lld ",ansc%mod);
		if(ansf==-1) printf("0\n");
		else printf("%lld\n",ansf%mod);
	}
	return 0;
}