#include<bits/stdc++.h>
using namespace std;
const long long mod=998244353;
int T,id;
int a[1005][1005];
string s[1005];
int pre[1005][1005];
int n,m,c,f;
inline void init()
{
	for(register int i=1;i<=n;i++)
	for(register int j=0;j<m;j++)
		a[i][j+1]=s[i][j]-48;
	memset(pre,0,sizeof(pre));
	for(register int i=1;i<=n;i++)
	{
		int j=1;
		while(j<=m)
		{
			while(a[i][j]&&j<=m) j++;
			if(j>m) break;
			int prej=j;
			while(!a[i][j]&&j<=m) j++;
			j--;
			for(register int k=prej;k<j;k++)
			pre[i][k]=j-k;
			j++;
		}
	}
}
inline void dealc()
{
	long long ans1=0;
	for(register int j=1;j<=m;j++)
	{
		int i=1;
		while(i<=n)
		{
			while(a[i][j]&&i<=n) i++;
			if(i>n) break;
			int prei=i;
			while(!a[i][j]&&i<=n) i++;
			i--;
			for(register int l=prei;l<=i-2;l++)
			for(register int r=l+2;r<=i;r++)
			ans1+=pre[l][j]*pre[r][j],ans1%=mod;
			i++;
		}
	}
	cout<<(ans1*c)%mod<<' ';
}
inline void dealf()
{
	long long ans2=0;
	for(register int j=1;j<=m;j++)
	{
		int i=1;
		while(i<=n)
		{
			while(a[i][j]&&i<=n) i++;
			if(i>n) break;
			int prei=i;
			while(!a[i][j]&&i<=n) i++;
			i--;
			for(register int l=prei;l<=i-2;l++)
			for(register int r=l+2;r<i;r++)
			ans2+=pre[l][j]*pre[r][j]*(i-r),ans2%=mod;
			i++;
		}
	}
	cout<<(ans2*f)%mod<<endl;
}
int main()
{
	freopen("plant.in","r",stdin);
	freopen("plant.out","w",stdout);
	ios::sync_with_stdio(false);
	cin.tie(0),cout.tie(0);
	cin>>T>>id;
	while(T--)
	{
		cin>>n>>m>>c>>f;
		if(c==0&&f==0) 
		{
			cout<<"0 0"<<endl;
			continue;
		}
		for(register int i=1;i<=n;i++) cin>>s[i];
		init();
		if(c==1) dealc();
		else cout<<0<<' ';
		if(f==1) dealf();
		else cout<<0<<endl;
	}
	return 0;
}
