#include<bits/stdc++.h>
using namespace std;
char a[1001];
int n,m,C,F,T,id,mapi[1001][1001],f[1001][1001],f1[1001][1001];
unsigned long long ans,ans1,mo=998244353;
int main(){
freopen("plant.in","r",stdin);
freopen("plant.out","w",stdout);
scanf("%d %d",&T,&id);
for(register int j=1;j<=T;j++){
scanf("%d %d %d %d",&n,&m,&C,&F);
ans=0,ans1=0;
memset(a,0,sizeof(a)),memset(mapi,0,sizeof(mapi)),memset(f,0,sizeof(f)),memset(f1,0,sizeof(f1));
for(register int i=1;i<=n;i++){
scanf("%s",a);
for(register int h=0;h<m;h++) mapi[i][h+1]=a[h]-48;
}
for(register int i=n;i>=1;i--){
for(register int h=m;h>=1;h--){
if(mapi[i][h]) f[i][h]=0;
else f[i][h]=f[i][h+1]+1;
}
}
for(register int i=n;i>=1;i--){
for(register int h=m;h>=1;h--){
if(mapi[i][h]) f1[i][h]=0;
else f1[i][h]=f1[i+1][h]+1;
}
}
for(register int i=1;i<=n-2;i++){
for(register int h=1;h<=m-1;h++){
if(f[i][h]>0){
for(register int k=i+1;!mapi[k][h]&&k<=n;k++){
if(f[k][h]>1&&k>=i+2){
ans+=f[i][h+1]*f[k][h+1];ans%=mo;
ans1+=f[i][h+1]*f[k][h+1]*f1[k+1][h];ans1%=mo;
}
}
}
}
}
printf("%lld %lld\n",C*ans%mo,F*ans1%mo);
}
return 0;
}