#include<bits/stdc++.h>
using namespace std;
const int P=998244353,M=1011;

int n,m,c,f,a[M][M],nu[M][M],d[M],kj[M][M],vc,vf;
void init()
{
		for(int i=1;i<=n;i++)
		{ 
		    
		     for(int j=1;j<=m;j++)
			 {
			 	if(a[i][j]==1)
			 	{
			 		d[j]=0;nu[i][j]=d[j];
			 		continue;
				}
			 	else
			 	{
			 		d[j]++;
			        nu[i][j]=d[j];
				}
			 }
		}
		memset(d,0,sizeof(int)*n);
		for(int i=1;i<=n;i++)
		{ 
		    
		     for(int j=1;j<=m;j++)
			 {
			 	if(a[i][j]==1)
			 	{
			 		d[i]=0;kj[i][j]=d[i];
			 		continue;
				}
			 	else
			 	{
			 		d[i]++;
			        kj[i][j]=d[i];
				}
			 }
		}
}
void search(int r,int l,int qw)
{
	if(qw==1)
	{
		for(int i=3;i<=n;i++)
		{ 
		   int uo=0;
		     for(int j=n;j>1;j--)
			 {
			 	if(kj[i][j]>1)
			 	{
				 	for(int u=1;u<kj[i][j];u++)
					   if(nu[i][j-u]>=3)
					   {     
						     uo=j-u;
						     int op=nu[i][uo];
						   	 for(;op>=3;op--)
						   	 {  int g=i-op+1;
								
					
						   	 	for(int k=n;k>uo;k--)
						   	 	{
						   	 		    if(kj[g][k]>1)
										{
										  	for(int b=1;b<kj[g][k];b++)
										  	if(k-b ==uo)
										  	{
										  		vc+=(u)*(b);
										  		vc%=P;
												  k=uo;break;
										  		
											}
											
										}
								}
						   	 	 
						   	 	  
							 }
							 
					   }
				   	j=j-kj[i][j]+1;
				}
			 }
		
		}
		
	}
	else
	{
		for(int re=4;re<=n;re++)
		{
			
			for(int i=3;i<re;i++)
			{ 
			   int uo=0;
			     for(int j=n;j>1;j--)
				 {
				 	
				 	if(kj[i][j]>1)
				 	{
					 	for(int u=1;u<kj[i][j];u++)
						   if(nu[i][j-u]>=3&&nu[re][j-u]>=(re-i+1))
						   {     
							     uo=j-u;
							     int op=nu[i][uo];
							   	 for(;op>=3;op--)
							   	 {  int g=i-op+1;
									
							   	 	for(int k=n;k>uo;k--)
							   	 	{
							   	 		   if(kj[g][k]>1)
										{
										  	for(int b=1;b<kj[g][k];b++)
										  	if(k-b ==uo)
										  	{
										  		vf+=(u)*(b);
										  		vf%=P;
												  k=uo;break;
											}
											
										}
									}
							   	 	 
							   	 	  
								 } 
						   }
					   	j=j-kj[i][j]+1;
					}
				 }
			
			}
		}
	}
}
int main()
{
	int t,id;
	freopen("plant.in","r",stdin);
	freopen("plant.out","w",stdout);
	scanf("%d %d",&t,&id);
	while(t--)
	{
		vc=0; vf=0;
		scanf("%d %d %d %d",&n,&m,&c,&f);
		for(int i=1;i<=n;i++)
		{ 
		     for(int j=1;j<=m;j++)
			 {
			 	kj[i][j]=0;
			 	nu[i][j]=0;
			 }
		}
		
		char e[M][M];
		
		for(int i=1;i<=n;i++)
		{ 
		     for(int j=1;j<=m;j++)
			 scanf(" %c",&e[i][j]);
		}
		for(int i=1;i<=n;i++)
		{ 
		     for(int j=1;j<=m;j++)
			 {
			 	a[i][j]=e[i][j]-'0';
			    
			 }
		}
		memset(d,0,sizeof(int)*n);
		init();
		
		
		if(c==0)vc=0;
		else
	    search(n,m,1);
	    
	    if(n<=3)vf=0;
	    else if(f==0)vf=0;
	    else
	    search(n,m,0);
	    
	    vc=vc*c%P;
	    vf=vf*c%P;
		printf("%d %d",vc,vf);
		printf("\n");
	}
	return 0;
}
