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

inline int read()
{
    int x=0,f=1;char s=getchar();
    while(s<'0'||s>'9')
    {
        if(s=='-') f=-1;
        s=getchar();
    }
    while(s>='0'&&s<='9')
    {
        x=x*10+s-'0';
        s=getchar();
    }
    return x*f;
}

const int p=998244353;

inline int add(int a,int b)
{
    return a+b>=p?a+b-p:a+b;
}

inline int sub(int a,int b)
{
    return a-b<0?a-b+p:a-b;
}

const int N=1005;
char s[N][N];
int dcnt[N][N],rcnt[N][N],drs[N][N],drs2[N][N];
int main()
{
    freopen("plant.in","r",stdin);
    freopen("plant.out","w",stdout);
    int T=read(),id=read();
    while(T--)
    {
        int n=read(),m=read(),c=read(),f=read();
        for(int i=1;i<=n;i++) scanf("%s",s[i]+1);
        for(int i=1;i<=n;i++)
        {
            int cnt=0;
            for(int j=m;j>=1;j--)
            {
                if(s[i][j]=='1') cnt=0;
                else cnt++;
                rcnt[i][j]=cnt;
            }
        }
        for(int j=1;j<=m;j++)
        {
            int cnt=0;
            for(int i=n;i>=1;i--)
            {
                if(s[i][j]=='1') cnt=0;
                else cnt++;
                dcnt[i][j]=cnt;
            }
        }
        for(int j=1;j<=m;j++)
        {
            drs[n][j]=rcnt[n][j];
            for(int i=n-1;i>=1;i--)
            {
                if(s[i][j]=='1') drs[i][j]=0;
                else drs[i][j]=add(drs[i+1][j],rcnt[i][j]);
            }
        }
        int sc=0,sf=0;
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
            {
                if(s[i][j]=='1') continue;
                if(dcnt[i][j]<=2) continue;
                int v1=rcnt[i][j]-1;
                int v2=sub(drs[i+2][j],dcnt[i][j]-2);
                sc=add(sc,1ll*v1*v2%p);
            }
        for(int j=1;j<=m;j++)
        {
            int cnt=0;
            for(int i=n;i>=1;i--)
            {
                if(s[i][j]=='1') drs2[i][j]=cnt=0;
                else
                {
                    drs2[i][j]=add(drs2[i+1][j],1ll*cnt*(rcnt[i][j]-1)%p);
                    cnt++;
                }
            }
        }
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
            {
                if(s[i][j]=='1') continue;
                if(dcnt[i][j]<=2) continue;
                sf=add(sf,1ll*(rcnt[i][j]-1)*drs2[i+2][j]%p);
            }
        printf("%d %d\n",sc*c,sf*f);
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++) rcnt[i][j]=dcnt[i][j]=drs[i][j]=drs2[i][j]=0;
    }
    return 0;
}
