#include<bits/stdc++.h>
using namespace std;

const int mod=998244353;

int a[1005][1005];
char s[1005][1005];
int C[1005],F[1005],sumc=0,sumf=0;
int T,id;
int n,m,c,f;
int cc[1005][1005][3],ff[1005][1005];
int check2_4(int x){
	int sum=0;
    if(a[x][1]!=0||a[x][2]!=0)return 0;
    if(a[x+1][1]!=0)return 0;
    for(int i=x+2;i<=n;i++){
        if(a[i][1]!=0)return 0;
        if(a[i][1]==0&&a[i][2]==0){
        	if(i<n)
        		if(a[i+1][1]==0){
        			F[i+1]+=1;
        			sumf+=1;
				}
			sum+=1;
		}
    }
    return sum;;
}

int getlen(int x,int y){
	int sum=0;
	for(int i=y;i<=m;i++){
		if(a[x][i]==1)break;
		sum+=1;
	}
	return sum;
}
int c2[1005][1005],f2[1005][1005];
void getc(int x,int y){
	int lc=getlen(x,y);
	if(lc>=2){
		int t=x+1;
		if(a[x+1][y]==0){
			for(int i=x+2;i<=n;i++){
				int lf=0;
				lf=getlen(i,y);
				if(lf>=2){
					c2[i][y]+=(lc-1)*(lf-1);
				}
				else if(lf==0)break;
			}
		}
	}
}
void getf(){
	for(int i=4;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(a[i][j]==0){
				if(c2[i-1][j])f2[i][j]+=c2[i-1][j];
				if(f2[i-1][j])f2[i][j]+=f2[i-1][j];
			}
		
		}
	}
}
void solve(){
	memset(a,0,sizeof(a));
	memset(c2,0,sizeof(c2));
	memset(f2,0,sizeof(f2));
	memset(F,0,sizeof(F));
	memset(C,0,sizeof(C));
    cin>>n>>m>>c>>f;
    for(int i=1;i<=n;i++)
    	cin>>s[i]+1;
    for(int i=1;i<=n;i++){
    	for(int j=1;j<=m;j++){
    		a[i][j]=s[i][j]-'0';
		}
	}
   
    if(id==1){
		cout<<0<<' '<<0<<endl;;
		return;
		}
    if(id>=2&&id<=4){
        for(int i=1;i<=n;i++){
        	int t=check2_4(i);
            sumc+=t;
        }
        int ansc=(sumc%mod)*(c%mod)%mod;
        int ansf=(sumf%mod)*(f%mod)%mod;
        if(id==2){
       		cout<<ansc<<' '<<0<<endl;
       		return ;
		}
        cout<<ansc<<' '<<ansf<<endl;
        return ;
    }
    if(id==15){
    	for(int i=1;i<=n-2;i++){
    		for(int j=1;j<=m;j++){
    			getc(i,j);
			}
		}
		int sumc=0,sumf=0;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				sumc+=c2[i][j];
			}
		}
		int ansc=(sumc%mod)*(c%mod)%mod;
		cout<<ansc<<' '<<0<<endl;
		return;
	}
    if(id!=0){
    	for(int i=1;i<=n-2;i++){
    		for(int j=1;j<=m;j++){
    			getc(i,j);
			}
		}
		getf();
		int sumc=0,sumf=0;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				sumc+=c2[i][j];
				sumf+=f2[i][j];
			}
		}
		int ansc=(sumc%mod)*(c%mod)%mod;
        int ansf=(sumf%mod)*(f%mod)%mod;	
		cout<<ansc<<' '<<ansf<<endl;
		return;
	}
    
}

int main(){
    freopen("plant.in","r",stdin);
    freopen("plant.out","w",stdout);
    cin>>T>>id;
    while(T){
        solve();
        T--;
    }
}
