#include <bits/stdc++.h>
using namespace std;
#define I 998244353
long long T,id,c,f,n,m,mp[1005][1005],sum[1005][1005],first,ansc,ansf,now;
char s;
int main()
{
	freopen("plant.in","r",stdin);
	freopen("plant.out","w",stdout);
	scanf("%d %d",&T,&id);
	for(int z=1;z<=T;z++)
	{
		scanf("%lld %d %lld %lld",&n,&m,&c,&f);
		if(c==0&&f==0)
		{
			printf("0 0\n");
			continue;
		}
		for(int i=1;i<=n;i++)
		{
			first=0;
			getchar();
			for(int j=1;j<=m;j++)
			{
				scanf("%c",&s);
				mp[i][j]=s-'0';
				if(mp[i][j]==0&&first==0) first=j;
				else if(mp[i][j]==1&&first!=0)
				{
					for(int k=first;k<j;k++)
					{
						sum[i][k]=j-k-1;
					}
					first=0;
				}
			}
			if(first)
			{
				for(int k=first;k<m;k++)
				{
					sum[i][k]=m-k;
				}
			}
		}
//		for(int i=1;i<=n;i++)
//		{
//			for(int j=1;j<=m;j++)
//			{
//				printf("%d ",sum[i][j]);
//			}
//			printf("\n");
//		}
		ansc=0;
		ansf=0;
		for(int i=1;i<=n-2;i++)
		{
			for(int j=1;j<=m-1;j++)
			{
				for(int l=i+1;l<=n-1;l++)
				{
					if(mp[l][j]==1) break;
					now=sum[i][j]*sum[l+1][j];
					ansc+=now;
					ansc%=I;
					int k=l+1;
					while(mp[k+1][j]==0&&k<n) k++;
					now*=(k-l-1);
					now%=I;
					ansf+=now;
					ansf%=I;
				}
			}
		}
		if(c==0) printf("0 ");
		else printf("%lld ",ansc);
		if(f==0) printf("0\n");
		else printf("%lld",ansf);
	}
	return 0;
}