#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
const int N = 1010, mod = 998244353;
int g[N][N], f[N][N];
int T, id, C, F, n, m;
char ch[N];
typedef long long LL;
LL get_c() {
LL res = 0;
for (int j = 1; j <= m; j ++ ) {
for (int l = 1, r = 1; l <= n && r <= n; l = r + 1, r = l) {
if (f[l][j] == 0) continue;
LL s = 0; int cnt = 0;
while (f[r][j]) r ++ ; r -- ;
for (int i = l; i <= r; i ++ ) {
if (f[i][j] > 1) cnt ++ ;
if (cnt == 2 && f[i - 1][j] == 1)
res = (res + s * (f[i][j] - 1)) % mod;
else if (cnt > 2 && f[i - 1][j] == 1)
res = (res + s * (f[i][j] - 1)) % mod;
else if (cnt > 2 && f[i - 1][j] > 1)
res = (res + (s - f[i - 1][j] + 1) * (f[i][j] - 1)) % mod;
s = s + (f[i][j] - 1);
}
}
}
return res;
}
LL get_f() {
LL ans = 0;
for (int j = 1; j <= m; j ++ ) {
for (int l = 1, r = 1; l <= n && r <= n; l = r + 1, r = l) {
if (f[l][j] == 0) continue;
LL s = 0, res = 0; int cnt = 0;
while (f[r][j]) r ++ ; r -- ;
for (int i = l; i <= r; i ++ ) {
if (f[i][j] > 1) cnt ++ ;
if (i == r) break;
if (cnt == 2 && f[i - 1][j] == 1)
res = (res + s * (f[i][j] - 1)) % mod;
else if (cnt > 2 && f[i - 1][j] == 1)
res = (res + s * (f[i][j] - 1)) % mod;
else if (cnt > 2 && f[i - 1][j] > 1)
res = (res + (s - f[i - 1][j] + 1) * (f[i][j] - 1)) % mod;
s = s + (f[i][j] - 1);
}
int i = r;
if (f[i][j] > 1) {
ans = (ans + res) % mod; i -- ;
while (f[i][j] == 1) ans = (ans + res) % mod, i -- ;
}
else {
while (f[i][j] == 1) ans = (ans + res) % mod, i -- ;
}
}
}
return ans;
}
int main() {
scanf("%d%d", &T, &id);
while (T -- ) {
scanf("%d%d%d%d", &n, &m, &C, &F);
for (int i = 1; i <= n; i ++ ) {
scanf("%s", ch + 1);
for (int j = 1; j <= m; j ++ )
g[i][j] = ch[j] - '0';
}
for (int i = 1; i <= n; i ++ )
for (int j = m; j; j -- )
if (g[i][j]) f[i][j] = 0;
else f[i][j] = f[i][j + 1] + 1;
printf("%lld %lld\n", (get_c() * C) % mod, (get_f() * F) % mod);
}
}
/*
1 0
6 6 1 1
000010
011000
000110
010000
011000
000000
*/