#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const long long mod=998244353;
long meml[1050][1050];
long sumh[1050];
bool mapm[1050][1050];
void work(int n,int m)
{
unsigned long long ansc=0;
unsigned long long lasc=0;
unsigned long long ansf=0;
for(int i=1;i<=m;i++)
{
memset(sumh,0,sizeof(sumh)); lasc=0;
for(int j=1;j<=n;j++)
{
if(mapm[j][i]==0)
{
sumh[j]=(sumh[j-1]+meml[j][i+1])%mod;
if(j>=3)
{
if(j!=n) ansf=(ansf+lasc)%mod;
ansc=(ansc+meml[j][i+1]*sumh[j-2])%mod;
lasc=(lasc+meml[j][i+1]*sumh[j-2])%mod;
}
}
else
memset(sumh,0,sizeof(sumh)),lasc=0;
}
}
cout<<ansc<<' '<<ansf<<endl;
}
int main()
{
int t,d;scanf("%d%d",&t,&d);
while(t--)
{
memset(meml,0,sizeof(meml));
memset(mapm,0,sizeof(mapm));
int n,m,c,f;scanf("%d%d%d%d",&n,&m,&c,&f);
for(int i=1;i<=n;i++)
{
string data;cin>>data;
for(int j=1;j<=m;j++)
{
mapm[i][j]=data[j-1]=='1'? 1:0;
}
for(int j=m;j>=1;j--)
{
if(mapm[i][j]==0)
meml[i][j]=meml[i][j+1]+1;
else
meml[i][j]=0;
}
}
work(n,m);
}
}