#include <bits/stdc++.h>
using namespace std;

const int N=1005;
const int mod=998244353;

int n,m,c,f;
int sum[N][N];
int a[N][N];
int T,id;
int inv2;
int Vc;
int Vf;

int poww(int a,int b) {
	int ans=1;
	int sz=a;
	while(b) {
		if(b&1) ans=1ll*ans*sz%mod;
		sz=1ll*sz*sz%mod;
		b>>=1;
	}
	return ans;
}

void C_calc(int line,int l,int r) {
	if(r-l+1<=2) return ;
	int res=0;
	int tot=0;
	for(int i=l; i<=r; i++) 
		tot=(tot+sum[i][line]-1+mod)%mod;
	for(int i=l; i<=r; i++)
		res=(res+1ll*(sum[i][line]-1)*(tot-(sum[i][line]-1)+mod)%mod)%mod;
	res=(1ll*res*inv2)%mod;
	for(int i=l; i<=r-1; i++) 
		res=(res-(sum[i][line]-1)*(sum[i+1][line]-1)+mod)%mod;
	Vc=(Vc+res)%mod;
}

void F_calc(int line,int l,int r) {
	if(r-l+1<=3) return ;
	int res=0;
	int tot=0;
	for(int i=l; i<=r-1; i++) 
		tot=(tot+sum[i][line]-1+mod)%mod;
	int cnt=1;
	for(int i=r-1; i>=l+1; i--) {
		int t=(1ll*tot-sum[i][line]+1-sum[i-1][line]+1)%mod;
		res=(res+1ll*t*(sum[i][line]-1)%mod*cnt%mod)%mod;
		tot-=(sum[i][line]-1);
		tot=(tot+mod)%mod;
		cnt++;
	}
	Vf=(Vf+res)%mod;
}

char s[N];

int main() {
	freopen("plant.in","r",stdin);
	freopen("plant.out","w",stdout);
//	freopen("a.txt","r",stdin);
	scanf("%d%d",&T,&id);
	inv2=poww(2,mod-2);
	while(T--) {
		memset(sum,0,sizeof(sum));
		Vc=Vf=0;
		scanf("%d%d%d%d",&n,&m,&c,&f);
		for(int i=1; i<=n; i++) {
			scanf("%s",s+1);
			for(int j=1; j<=m; j++) 
				a[i][j]=(int)(s[j]-'0');
		}
 		for(int i=1; i<=n; i++) 
			for(int j=m; j>=1; j--) 
				if(a[i][j]==1) sum[i][j]=0;
				else sum[i][j]=sum[i][j+1]+1;
		for(int j=1; j<=m; j++) a[n+1][j]=1; 
		int flag=0,l=0;
		for(int j=1; j<=m; j++) {
			for(int i=1; i<=n+1; ) {
				if(a[i][j]==1&&flag==1) {
					C_calc(j,l,i-1);
					F_calc(j,l,i-1);
					flag=0;
					i++;
				}
				else if(a[i][j]==0&&flag==0) {
					flag=1;
					a[i][j]=1;
					l=i;
					i++;
				} 
				else i++; 
			}	
		}
		printf("%d %d\n",c*Vc,f*Vf);
	}
	return 0;
}