#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=998244353;
inline int read(){
	int x=0,f=1;char c=getchar();
	for(;!isdigit(c);c=getchar())if(c=='-')f=-1;
	for(;isdigit(c);c=getchar())x=(x<<3)+(x<<1)+(c^48);
	return x*f;
}
int T,n,m,id,C,F;
bool a[1010][1010];
ll s[1010][1010],h[1010][1010];
ll ansc,ansf;
int main(){
	freopen("plant.in","r",stdin);
	freopen("plant.out","w",stdout);
	T=read(),id=read();
	while(T--){
		memset(s,0,sizeof(s));
		memset(h,0,sizeof(h));
		n=read(),m=read(),C=read(),F=read();
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				char ch=getchar();
				while(ch!='1'&&ch!='0')ch=getchar();
				a[i][j]=ch^48;
//				putchar(a[i][j]+'0');
			}
		}
		for(int i=1;i<=n;i++){
			for(int j=m;j>=1;--j){
				if(a[i][j])continue;
				h[i][j]=h[i][j+1]+1;
			}
		}
		for(int i=1;i<=m;i++){
			for(int j=n;j>=1;--j){
				if(a[j][i])continue;
				s[j][i]=s[j+1][i]+1;
			}
		}
//		for(int i=1;i<=n;i++){
//			for(int j=1;j<=m;j++){
//				cout<<h[i][j]<<" ";
//			}
//			puts("");
//		}
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				for(int k=i+2;k<=i+s[i][j]-1;k++){
					ansc+=(h[i][j]-1)*(h[k][j]-1);
					ansc%=mod;
				}
			}
		}
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				for(int k=i+2;k<i+s[i][j]-1;k++){
					ansf+=(h[i][j]-1)*(h[k][j]-1)*(s[k][j]-1);
					ansf%=mod;
				}
			}
		}
		printf("%lld %lld\n",ansc*C,ansf*F);
	}
	fclose(stdin);
	fclose(stdout);
	return 0;
}
