#include<bits/stdc++.h>
using namespace std;
long long read()
{
	long long x=0,f=1;
	char ch=getchar();
	while(ch>'9'||ch<'0'){
		if(ch=='-')f=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9'){
		x=(x<<3)+(x<<1)+ch-'0';
		ch=getchar();
	}
	return x*f;
}
long long n,m,C,F,sum[1010],a[1010][1010],b[1010],f[1010],t,id,mod=998244353,sum1,sum2;
string s;
int main()
{
	freopen("plant.in","r",stdin);
	freopen("plant.out","w",stdout);
	t=read();
	id=read();
	while(t--){
		memset(sum,0,sizeof(sum));
		memset(a,0,sizeof(a));
		memset(b,0,sizeof(b));
		memset(f,0,sizeof(f));
		sum1=0;sum2=0;
		n=read();
		m=read();
		C=read();
		F=read();
		for(long long i=1;i<=n;i++){
			cin>>s;
			long long cnt=1;
			for(long long j=0;j<m;j++){
				if(j==0&&s[j]=='1')a[i][++a[i][0]]=0;
				if(s[j]==s[j+1]&&j!=m-1){
					cnt++;
					continue;
				}
				a[i][++a[i][0]]=cnt;
				cnt=1;
			}
		}
//		for(long long i=1;i<=n;i++){
//			for(long long j=1;j<=a[i][0];j++)printf("%d ",a[i][j]);
//			printf("\n");
//		}
		for(long long i=1;i<=m;i++){
			for(long long j=1;j<=n;j++){
				while(sum[j]<i&&b[j]<=a[j][0]){
					sum[j]+=a[j][++b[j]];
				}
			}
			long long cnt11=0;
			for(long long j=n;j>=1;j--){
				if(b[j]%2){
					f[j]=cnt11;
					++cnt11;
				}
				else{
					cnt11=0;
					f[j]=0;
				}
			}
			long long cnt1=0,la=0;
			for(long long j=1;j<=n;j++){
				if(b[j]%2){
					sum1=(sum1+(sum[j]-i)*cnt1%mod)%mod;
					sum2=(sum2+(sum[j]-i)*cnt1*f[j])%mod;
//					printf("%d %d ::%d %d %d\n",j,i,sum1,la,cnt1);
					cnt1+=la;
					la=sum[j]-i;
				}
				else{
					cnt1=0;
					la=0;
				}
			}
		}
		printf("%lld %lld\n",sum1*C%mod,sum2*F%mod);
	}
	return 0;
}