#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mo=998244353;
const int N=1005;
int T,id;
ll CC,FF;
int n,m,a[N][N];
int sum1[N][N],sum2[N][N],psum2[N][N],p[N][N];
int main(){
//	freopen("plant3.in","r",stdin);
//	freopen("plant.out","w",stdout);
	scanf("%d%d",&T,&id);
	while(T--){
		scanf("%d%d%lld%lld",&n,&m,&CC,&FF);
		for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)scanf("%1d",&a[i][j]);
		for(int i=1;i<=n;i++){
			sum1[i][m+1]=0;
			for(int j=m;j>=1;j--)
				if(a[i][j]==1)sum1[i][j]=0;
				else sum1[i][j]=sum1[i][j+1]+1;
		}
//		puts("A");
		for(int j=1;j<=m;j++){
			int nw=n;
			for(int i=n;i>=1;i--)
				if(a[i][j]==1)nw=i-1;
				else p[i][j]=nw;
		}
//		puts("B");
		for(int j=1;j<=m;j++){
			for(int i=1;i<=n;i++)
				psum2[i][j]=(psum2[i-1][j]+sum1[i][j])%mo;
		}
//		puts("C");
		for(int j=1;j<=m-1;j++){
			for(int i=1;i<=n-2;i++)
				if(a[i][j]==1||p[i][j]<=i+1)
					sum2[i][j]=0;
				else
					sum2[i][j]=(psum2[p[i][j]][j]-psum2[i+1][j]+mo)%mo;
			sum2[n][j]=sum2[n-1][j]=0;
		}
		
		puts("P0:");
		for(int i=1;i<=n;i++,puts(""))
			for(int j=1;j<=m;j++)
				printf("%d ",p[i][j]);
		puts("P1:");
		for(int i=1;i<=n;i++,puts(""))
			for(int j=1;j<=m;j++)
				printf("%d ",sum1[i][j]);
		puts("P2:");
		for(int i=1;i<=n;i++,puts(""))
			for(int j=1;j<=m;j++)
				printf("%d ",sum2[i][j]);
				
				
		ll ansc=0,ansf=0;
		for(int x=1;x<=n-2;x++)for(int y=1;y<=m-1;y++){
			if(a[x][y]==1||p[x][y]<=x+1)continue;
			(ansc+=1ll*(sum1[x][y]-1+mo)*(sum2[x][y]-(p[x][y]-x-1)+mo))%=mo;
//			printf("AFTER %d %d,get%lld\n",x,y,ansc);
			if(x==n-2)continue;
			(ansf+=1ll*(sum1[x][y]-1+mo)*(sum2[x][y]-sum1[p[x][y]][y]-(p[x][y]-x-2)+mo)%mo)%=mo;
//			printf("AFTER %d %d,get%lld\n",x,y,ansf);
		}
		printf("%lld %lld\n",(ansc*CC)%mo,(ansf*FF)%mo);
	}
	return 0;
}