#include<bits/stdc++.h>
using namespace std;
const int N=1000,mod=998244353;
int T,opt,n,m,c,f;
long long g[N+5],h[N+5],ansC,ansF;
long long p[N+5][N+5],C[N+5][N+5];
char s[N+5][N+5];
inline long long Mod(long long x){return x>=mod?x-mod:x;}
inline long long MOD(long long x){return x>=mod?x%mod:x;}
int main(){
	freopen("plant.in","r",stdin);
	freopen("plant.out","w",stdout);
	int la;
	scanf("%d%d",&T,&opt);
	while(T--){
		ansC=ansF=0;
		scanf("%d%d%d%d",&n,&m,&c,&f);
		for(int i=1;i<=n;i++)scanf("%s",s[i]+1);
		for(int i=1;i<=m;i++)g[i]=h[i]=0;
		for(int i=1;i<=n;i++){
			la=m;
			for(int j=m;j>=1;j--){
				C[i][j]=p[i][j]=0;
				if(s[i][j]=='1'){
					la=j-1,p[i][j]=0;
					g[j]=h[j]=0;
				}
				else if(s[i][j]=='0'){
					p[i][j]=la-j;
					if(i>=3&&s[i-1][j]=='0'&&s[i-2][j]=='0'){
						g[j]=Mod(g[j]+p[i-2][j]);
						C[i][j]=MOD(p[i][j]*g[j]);
						ansC=Mod(ansC+C[i][j]);
					}
					if(i>=2&&s[i-1][j]=='0'){
						h[j]=Mod(h[j]+C[i-1][j]);
						ansF=Mod(ansF+h[j]);
					}
				}
			}
		}
		printf("%lld %lld\n",ansC*c,ansF*f);
	}
	fclose(stdin);
	fclose(stdout);
	return 0;
}
