#include<bits/stdc++.h>
#define mod 998244353
using namespace std;
int T,id,n,m,c,f,hen[1011][1011],zhong[1011][1011];
char ch;
bool a[1011][1011];
inline int read(){
int x = 0, f = 1;
char ch = getchar();
while (!isdigit(ch)){
if (ch == '-')
f = -1;
ch = getchar();
}
while (isdigit(ch)){
x = (x << 1) + (x << 3) + (ch ^ 48);
ch = getchar();
}
return x * f;
}
inline void write(int x){
if (x < 0) putchar('-'), x = -x;
if (x > 9) write(x / 10);
putchar(x % 10 + '0');
}
long long cc()
{
long long ans=0;
for(int i=1;i<n;i++)
{
for(int j=1;j<m;j++)
{
if((!a[i][j])&&(!a[i+1][j])&&(!a[i][j+1])&&(!a[i+2][j]))
{
int ys=i+1;
while(!a[ys+1][j])
{
ys++;
ans+=hen[ys][j]*hen[i][j]%mod;
ans%=mod;
}
}
}
}
return ans;
}
long long ff()
{
long long ans=0;
for(int i=1;i<n;i++)
{
for(int j=1;j<m;j++)
{
if((!a[i][j])&&(!a[i+1][j])&&(!a[i+2][j])&&(!a[i+3][j])&&(!a[i][j+1]))
{
int lyg=i+1;
while(!a[lyg+1][j])
{
lyg++;
ans+=hen[lyg][j]*hen[i][j]*(zhong[i][j]+i-lyg)%mod;
ans%=mod;
}
}
}
}
return ans;
}
void record()
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if((!a[i][j]))
{
int num1=j;
while((!a[i][num1+1])&&num1+1<=m) num1++;
for(int g=j;g<=num1;g++)
hen[i][g]=num1-g;
int num2=i;
while((!a[num2+1][j])&&num2+1<=n) num2++;
for(int g=i;g<=num2;g++)
zhong[g][j]=num2-g;
}
}
}
}
int main()
{
T=read();
id=read();
while(T--)
{
n=read();
m=read();
c=read();
f=read();
memset(a,1,sizeof(a));
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>ch;
a[i][j]=ch-48;
}
}
record();
(c) ? write(cc()),printf(" ") : printf("0 ");
(f) ? write(ff()),printf("\n") : printf("0\n");
}
return 0;
}