#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1007;
const int mod=998244353;
inline int read(){
int XX=0,FF=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')
FF*=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
XX=XX*10+ch-48;
ch=getchar();
}
return XX*FF;
}
int a[N][N];
int b[N][N],c[N][N];
int sum1[N][N],sum2[N][N];
int ans1,ans2;
signed main(){
ios::sync_with_stdio(false);
int T=read(),id=read();
while(T--){
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
memset(sum1,0,sizeof(sum1));
memset(sum2,0, sizeof(sum2));
ans1=ans2=0;
int n=read(),m=read();
int C=read(),F=read();
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
char ch;
cin>>ch;
a[i][j]=ch-'0';
}
}
for(int i=1;i<=n;++i){
for(int j=m;j>=1;--j){
if(!a[i][j]){
b[i][j]=b[i][j+1]+1;
}
else {
b[i][j]=0;
}
}
}
for(int i=n;i>=1;--i){
for(int j=1;j<=m;++j){
if(!a[i][j]){
c[i][j]=c[i+1][j]+1;
}
else {
c[i][j]=0;
}
}
}
for(int i=n-2;i>=1;--i){
for(int j=1;j<=m;++j){
if(a[i][j]==1||a[i+1][j]==1||a[i+2][j]==1){
sum1[i][j]=0;
}
else {
sum1[i][j]=(sum1[i+1][j]+b[i+2][j]-1)%mod;
}
}
}
for(int i=n-3;i>=1;--i){
for(int j=1;j<=m;++j){
if(a[i][j]==1||a[i+1][j]==1||a[i+2][j]==1){
sum2[i][j]=0;
}
else {
sum2[i][j]=(sum2[i+1][j]+(c[i+2][j]-1)*(b[i+2][j]-1)%mod)%mod;
}
}
}
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
if(b[i][j]>0){
ans1+=(b[i][j]-1)*sum1[i][j]%mod;
ans2+=(b[i][j]-1)*sum2[i][j]%mod;
}
ans1%=mod,ans2%=mod;
}
}
cout<<ans1*C%mod<<' '<<ans2*F%mod<<endl;
}
return 0;
}