#include<bits/stdc++.h>
#define forr(i,l,r) for(int i=l;i<=r;i++)
#define ffor(i,r,l) for(int i=r;i>=l;i--)
#define int long long
using namespace std;
const int N=1e3+10,md=998244353;
int a[N][N];
int d[N],sd[N][N];
signed main()
{
	freopen("plant.in","r",stdin);
	freopen("plant.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int t,id,n,m,c,f,cnt,ans,anss;
	cin>>t>>id;
	flag:while(t--)
	{
		ans=0;
		anss=0;
		cin>>n>>m>>c>>f;
//		if(id==0)
//		{
//			
//			goto flag;
//		}
		if(n<3||m<2)
		{
			cout<<0<<" "<<0<<endl;
			goto flag;
		}
		char w;
		forr(i,1,n)
		{
			forr(j,1,m)
			{
				cin>>w;
				a[i][j]=(w=='1');
//				cout<<a[i][j]<<" ";
//				sum[i][j]=sum[i][j-1]+(!a[i][j]);
			}
//			cout<<endl;
		}
		cnt=0;
		forr(j,1,m)
		{
			cnt=0;
			forr(i,1,n)
			{
				if(!a[i][j])
				{
					cnt++;
					if(i==n)
					{
						i++;
						goto FG;
					}
				}
				else
				{
					FG:if(cnt>=3)
					{
						int ii=i-1,jj=j+1;
						for(ii=i-1;a[ii][j]==0&&ii>0;ii--)
						{
							for(jj=j+1;a[ii][jj]==0&&jj<=m;jj++)
							{
							}
							d[ii]=jj-j-1;
//							cout<<ii<<":"<<d[ii]<<endl;
							sd[ii][j]=sd[ii+1][j]+d[ii];
							sd[ii][j]%=md;
//							cout<<ii<<":"<<sd[ii][j]<<endl;
						}
						ii++;
						forr(o,ii,i-3)
						{
							ans+=d[o]*sd[o+2][j];
//							cout<<ans<<endl;
							ans%=md;
						}
						if(cnt>3)
						{
							forr(o,ii,i-4)
							{
								forr(p,o+2,i-2)
								{
									anss+=d[o]*d[p]*(i-p-1);
									anss%=md;
//									cout<<"qwq:"<<d[o]*d[p]*(i-p)<<" ";
//									if(d[o]*d[p]*(i-p)==12)
//									{
//										cout<<i<<" "<<j<<" "<<ii<<" "<<jj<<" "<<o<<" "<<p<<" "<<endl;
//									}
								}
							}
						}
					}
					cnt=0;
				}
			}
		}
		cout<<ans*c%md<<" "<<anss*f%md<<endl;
	}
	return 0;
}