#include<bits/stdc++.h>
using namespace std;
#define int long long
const int MAXN=2000;
const int Mod=998244353;
int T,Id;
int n,m,c,f;
char mmap[MAXN][MAXN];
int cnth[MAXN][MAXN],cnts[MAXN][MAXN];
int cnt=0;
int ansc,ansf;
int nowans=0;
int tmp;
int two[MAXN];
void WorkTest2() {
	if(mmap[1][1]=='1'||mmap[1][2]=='1'||mmap[2][1]=='1'||mmap[3][1]=='1'||mmap[3][2]=='1') {
		ansc=0;
	} else {
		ansc=1;
	}
	ansf=0;
	cout<<ansc<<" "<<ansf<<'\n';
}
void WorkTest7() {
	for(int i=1; i<=n; i++) {
		nowans=0;
		for(int j=m; j>=1; j--) {
			if(mmap[i][j]=='1') {
				nowans=0;
			} else {
				cnth[i][j]=++nowans;
			}
		}
	}
	for(int i=1; i<=m; i++) {
		nowans=0;
		for(int j=n; j>=1; j--) {
			if(mmap[j][i]=='1') {
				nowans=0;
			} else {
				cnts[j][i]=++nowans;
			}
		}
	}
	int num=0;
	for(int i=1; i<=n; i++) {
		for(int j=1; j<=m; j++) {
			num=0;
			if(cnth[i][j]>=2&&cnts[i][j]>=3) {
				for(int k=i+2; k<i+cnts[i][j]; k++) {
					if(cnth[k][j]>=2) {
						num=num+cnth[k][j]-1;
						num%=Mod;
					}
				}
				ansc=ansc+(num*(cnth[i][j]-1));
				ansc%=Mod;
			}
		}
	}
	for(int i=1; i<=n; i++) {
		for(int j=1; j<=m; j++) {
			num=0;
			tmp=0;
			if(cnth[i][j]>=2&&cnts[i][j]>=4) {
				for(int k=i+2; k<i+cnts[i][j]; k++) {
					if(cnth[k][j]>=2&&cnts[k][j]>=2) {
						tmp=(cnth[k][j]-1)%Mod*(cnts[k][j]-1)%Mod;
						tmp%=Mod;
						num=num+tmp;
						num%=Mod;
					}
				}
				ansf=ansf+(num*(cnth[i][j]-1));
				ansf%=Mod;
			}
		}
	}
	cout<<ansc<<" "<<ansf<<'\n';
}
void WorkTest6(){
	int num=0;
	for(int i=1; i<=n; i++) {
		nowans=0;
		for(int j=m; j>=1; j--) {
			if(mmap[i][j]=='1') {
				nowans=0;
			} else {
				cnth[i][j]=++nowans;
			}
		}
	}
	for(int i=1; i<=m; i++) {
		nowans=0;
		for(int j=n; j>=1; j--) {
			if(mmap[j][i]=='1') {
				nowans=0;
			} else {
				cnts[j][i]=++nowans;
			}
		}
	}
	num=0;
	for(int i=1;i<=m;i++){
		if(cnth[1][i]>=2&&cnth[2][i]!=0&&cnth[3][i]>-2){
			num=num+((cnth[1][i]-1)%Mod*(cnth[3][i]-1)%Mod);
			num%=Mod;
		}
	}
	ansc=num;
	cout<<ansc<<" "<<0<<'\n';
}
signed main() {
	freopen("plant.in","r",stdin);
	freopen("plant.out","w",stdout);
	cin>>T>>Id;
	while(T--) {
		cnt=0;
		ansc=0;
		ansf=0;
		memset(cnth,0,sizeof(cnth));
		memset(cnts,0,sizeof(cnts));
		cin>>n>>m>>c>>f;
		for(int i=1; i<=n; i++) {
			for(int j=1; j<=m; j++) {
				cin>>mmap[i][j];
			}
		}
		if(Id==1) {
			cout<<0<<" "<<0<<'\n';
		} else if(Id==2) {
			WorkTest2();
		} else if(Id>=7&&Id<=12||Id==3) {
			WorkTest7();
		}else if(Id==6){
			WorkTest6();
		}else{
			WorkTest7();
		}
	}
	return 0;
}