#include<bits/stdc++.h>
const int MOD=998244353,N=1e3+10;
using namespace std;
char o;
long long n,m,c,f;
int mp[N][N],maxn[N][N],maxm[N][N],cnt[N][N],ansc,ansf;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int T,id;
cin>>T>>id;
while(T--)
{
memset(cnt,0,sizeof(cnt));
memset(maxn,0,sizeof(maxn));
memset(maxm,0,sizeof(maxm));
ansc=ansf=0;
cin>>n>>m>>c>>f;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>o;
mp[i][j]=o-'0';
}
}
if(c==0&&f==0)
{
cout<<"0 0\n";
continue ;
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cnt[i][j]=cnt[i-1][j]+mp[i][j];
}
}
for(int i=1;i<=n;i++)
{
for(int j=m;j>=1;j--)
{
if(!mp[i][j])
{
maxm[i][j]=max(j,maxm[i][j+1]);
}
}
}
for(int j=1;j<=m;j++)
{
for(int i=n;i>=1;i--)
{
if(!mp[i][j])
{
maxn[i][j]=max(i,maxn[i+1][j]);
}
}
}
for(int k=1;k<=m/10;k++)
{
for(int i=1;i<=n;i++)
{
if(mp[i][k]) continue;
for(int j=i+2;j<=n;j++)
{
if(mp[j][k]) break;
int cnt1=0,cnt2=0,cnt3=0;
if(cnt[j][k]-cnt[i][k]==0)
{
cnt1=maxm[i][k]-k;
cnt2=maxm[j][k]-k;
}
cnt3=maxn[j][k]-j;
int p=cnt1*cnt2;
p%=MOD;
ansc=(ansc+p)%MOD;
ansf=(ansf+p*cnt3)%MOD;
}
}
}
cout<<ansc%MOD<<" ";
if(f==0)
cout<<"0\n";
else
cout<<ansf%MOD<<"\n";
}
return 0;
}