#include<bits/stdc++.h>
using namespace std;
const int N=1e3+10;
const int mod=998244353;

int n,m,c,f;
char a[N][N];
int x[N][N],y[N][N];
int ans_c,ans_f;
void iint() {
	ans_c=ans_f=0;
	memset(x,0,sizeof x);
	memset(y,0,sizeof y);
	for(int i=1; i<=n; i++) {
		bool flag=0;
		int ed=m;
		for(int j=m; j>=1; j--)
			if(!flag) {
				if(a[i][j]=='0') {
					ed=j;
					flag=1;
				}
			} else {
				if(a[i][j]=='0')
					y[i][j]=ed-j;
				else
					flag=0;
			}
	}
	for(int i=1; i<=m; i++) {
		bool flag=0;
		int ed=n;
		for(int j=n; j>=1; j--)
			if(!flag) {
				if(a[j][i]=='0') {
					ed=j;
					flag=1;
				}
			} else {
				if(a[j][i]=='0')
					x[j][i]=ed-j;
				else
					flag=0;
			}
	}
}
void doo_c(int x_1,int y_0) {
	for(int i=x_1+2; i<=x[x_1][y_0]+x_1; i++)
		ans_c=(ans_c+y[x_1][y_0]%mod*y[i][y_0]%mod)%mod;
}
void doo_f(int x_1,int y_0) {
	for(int i=x_1+2; i<=x[x_1][y_0]+x_1; i++)
		ans_f=(ans_f+y[x_1][y_0]%mod*y[i][y_0]%mod*x[i][y_0]%mod)%mod;
}
signed main() {
	freopen("plant.in","r",stdin);
	freopen("plant.out","w",stdout);

	int T,id;
	cin>>T>>id;
	while(T--) {
		cin>>n>>m>>c>>f;
		for(int i=1; i<=n; i++)
			for(int j=1; j<=m; j++)
				cin>>a[i][j];
		iint();

		for(int i=1; i<=n; i++)
			for(int j=1; j<=m; j++)
				if(a[i][j]=='0') {
					doo_c(i,j);
					doo_f(i,j);
				}
		cout<<c*ans_c%mod<<" "<<f*ans_f%mod<<endl;
	}
	return 0;
}
/*
1 0
4 3 1 1
001
010
000
000
*/
