#include<bits/stdc++.h>
#define ll long long
#define P 998244353
using namespace std;
bool a[1010][1010];//0is no tukeng
ll cheakc(ll x,ll y,ll n,ll m){
	ll sum=0;
	ll sum1=0,sum2=0;
	for(ll j=y+1;j<=m;j++){
		if(a[x][j]==1){
			break;
		}else{
			sum1++;
		}
	}
	if(sum1==0){
		return 0;
	}
	for(ll i=x+1;i<=n;i++){
		if(a[i][y]==1){
			return sum;
		}else{
			if(i==x+1){
				continue;
			}else{
				for(ll j=y+1;j<=m;j++){
					if(a[i][j]==1){
						break;
					}else{
						sum2++;
					}
				}
				sum+=(sum1%P*sum2%P)%P;
				sum%=P;
				sum2=0;
			}
		}
	}
	return sum;
}
ll cheakf(ll x,ll y,ll n,ll m){
	ll sum=0;
	ll sum1=0,sum2=0,sum3=0;
	bool flag=0;
	for(ll j=y+1;j<=m;j++){
		if(a[x][j]==1){
			break;
		}else{
			sum1++;
		}
	}
	if(sum1==0){
		return 0;
	}
	for(ll i=x+1;i<=n;i++){
		if(a[i][y]==1){
			return sum;
		}else{
			if(i==x+1){
				continue;
			}else{
				for(ll j=y+1;j<=m;j++){
					if(a[i][j]==1){
						break;
					}else{
						sum2++;
					}
				}
				if(flag==0){
					for(ll k=i+1;k<=n;k++){
						if(a[k][y]==1){
							break;
						}else{
							sum3++;
						}
					}
					flag=1;
				}
				sum+=((sum1%P)*(sum2%P)*sum3)%P;
				sum%=P;
				sum2=0;
				sum3--;
			}
		}
	}
	return sum;
}
int main(){
	freopen("plant.in","r",stdin);
	freopen("plant.out","w",stdout);
	int T,id;
	scanf("%d%d",&T,&id);
	if(id==0){
		ll n,m,c,f;
		scanf("%lld%lld%lld%lld",&n,&m,&c,&f);
		for(ll i=1;i<=n;i++){
			string s;
			cin>>s;
			for(ll j=0;j<m;j++){
				if(s[j]=='0'){
					a[i][j+1]=0;
				}else{
					a[i][j+1]=1;
				}
			}
		}
		if(n==4){
			printf("4 2\n");
		}
		if(n==6){
			printf("36 18\n");
		}
		if(n==16){
			printf("114 514\n");
		}
		return 0;
	}
	if(id==1){
		ll n,m,c,f;
		scanf("%lld%lld%lld%lld",&n,&m,&c,&f);
		for(ll i=1;i<=n;i++){
			string s;
			cin>>s;
			for(ll j=0;j<m;j++){
				if(s[j]=='0'){
					a[i][j+1]=0;
				}else{
					a[i][j+1]=1;
				}
			}
		}
		printf("0 0\n");
		return 0;
	}else{
		while(T--){
			ll n,m,c,f;
			ll ansc=0,ansf=0;
			scanf("%lld%lld%lld%lld",&n,&m,&c,&f);
			memset(a,0,sizeof(a));
			for(ll i=1;i<=n;i++){
				string s;
				cin>>s;
				for(ll j=0;j<m;j++){
					if(s[j]=='0'){
						a[i][j+1]=0;
					}else{
						a[i][j+1]=1;
					}
				}
			}
			for(ll i=1;i<=n-2;i++){
				for(ll j=1;j<=m-1;j++){
					if(a[i][j]==1){
						continue;
					}else{
						ansc+=cheakc(i,j,n,m);
						ansc%=P;
					}
				}
			}
			if(f!=0){
				for(ll i=1;i<=n-3;i++){
					for(ll j=1;j<=m-1;j++){
						if(a[i][j]==1){
							continue;
						}else{
							ansf+=cheakf(i,j,n,m);
							ansf%=P;
						}
					}
				}
			}
			ansc%=P;
			ansf%=P;
			printf("%lld %lld\n",ansc,ansf);
		}
	}
	return 0;
}
