#include<bits/stdc++.h>
using namespace std;
const long long p=998244353;
string ss[1000+10];
int sum[1000+10][1000+10];
int psum[1000+10][1000+10];
int lst[1000+10][1000+10];
int nxt[1000+10][1000+10];
long long  f[1000+10][1000+10];
int main(){
	freopen("plant.in","r",stdin);
	freopen("plant.out","w",stdout);
	int T,id;
	scanf("%d%d",&T,&id);
	while(T--){
		memset(sum,0,sizeof sum);
		memset(psum,0,sizeof psum);
		memset(lst,0,sizeof lst);
		memset(nxt,0,sizeof nxt);
		memset(f,0,sizeof f);
		long long ans=0;
		long long ans1=0;
		int n,m;
		long long c,ff;
		scanf("%d%d%lld%lld",&n,&m,&c,&ff);
		for(int i=0;i<n;i++){
			cin>>ss[i];
		}
		for(int i=n;i>=1;i--)
			for(int j=m;j>=1;j--)
				if(ss[i-1][j-1]=='0') sum[i][j]=sum[i][j+1]+1;
				else sum[i][j]=0;
		for(int i=1;i<=n;i++) 
			for(int j=1;j<=m;j++)
				psum[i][j]=psum[i-1][j]+sum[i][j];
		for(int j=1;j<=m;j++){
			int sss=0;
			for(int i=1;i<=n;i++)
				if(ss[i-1][j-1]=='1') lst[i][j]=i;
				else
				lst[i][j]=lst[i-1][j];
		}
		for(int i=1;i<=m;i++) nxt[n+1][i]=n+1;
		for(int j=1;j<=m;j++){
			int sss=0;
			for(int i=n;i>=1;i--)
				if(ss[i-1][j-1]=='1') nxt[i][j]=i;
				else
				nxt[i][j]=nxt[i+1][j];
		}
		for(int i=3;i<=n;i++)
			for(int j=1;j<=m;j++){
				if(ss[i-1][j-1]=='1') continue;
				int ni=lst[i][j];
				if(i-ni<=1) {
				continue;}
				
				f[i][j]=(psum[i-2][j]-psum[ni][j]-(i-2-ni))%p*(sum[i][j]-1)%p;
				ans=ans+(f[i][j]);
				int t=nxt[i][j]-1;
				ans1+=f[i][j]*(long long)(t-i);
				ans1%=p;
				ans%=p;
			}
		cout<<(ans*c)%p<<' '<<ans1*ff%p<<endl;
	}
	return 0;
}