#include <bits/stdc++.h>
#define int unsigned long long
using namespace std;
const int mod = 998244353;
int T, id;
int a[1005][1005], row[1005][1005], col[1005][1005], yr[1005][1005], yc[1005][1005];
signed main() {
cin >> T >> id;
while (T--) {
memset(a, 0, sizeof(a));
memset(row, 0, sizeof(row));
memset(col, 0, sizeof(col));
memset(yr, 0, sizeof(yr));
memset(yc, 0, sizeof(yc));
int ansC = 0;
int ansF = 0;
int n, m, c, f; cin >> n >> m >> c >> f;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
char t; cin >> t;
a[i][j] = t - '0';
row[i][j] = row[i][j - 1] + a[i][j];
col[i][j] = col[i - 1][j] + a[i][j];
}
}
int len = 0;
for (int i = 1; i <= n; i++) {
len = 0;
for (int j = m; j >= 1; j--) {
if (a[i][j]) len = 0;
else yr[i][j] = len++;
}
}
for (int i = 1; i <= m; i++) {
len = 0;
for (int j = n; j >= 1; j--) {
if (a[j][i]) len = 0;
else yc[j][i] = len++;
}
}
if (id == 5) {
for (int i = 1; i <= n; i++) {
for (int j = i + 2; j <= n; j++) {
for (int k = 1; k < m; k += 3) {
if (col[j][k] - col[i - 1][k] != 0) continue;
int top = yr[i][k], bottom = yr[j][k], temp = yc[j][k];
ansC = (ansC + top * bottom % mod) % mod;
ansF = (ansF + temp * top % mod * bottom % mod) % mod;
}
}
}
}
else if (id == 6) {
for (int i = 1; i <= n; i += 4) {
for (int j = i + 2; j <= i + 3; j++) {
for (int k = 1; k < m; k++) {
if (col[j][k] - col[i - 1][k] != 0) continue;
int top = yr[i][k], bottom = yr[j][k], temp = yc[j][k];
ansC = (ansC + top * bottom % mod) % mod;
ansF = (ansF + temp * top % mod * bottom % mod) % mod;
}
}
}
}
else {
if (c != 0) {
for (int i = 1; i <= n; i++) {
for (int j = i + 2; j <= n; j++) {
for (int k = 1; k <= m; k++) {
if (col[j][k] - col[i - 1][k] != 0) continue;
int top = yr[i][k], bottom = yr[j][k];
ansC = (ansC + top * bottom % mod) % mod;
}
}
}
}
if (f != 0) {
for (int i = 1; i <= n; i++) {
for (int j = i + 2; j <= n; j++) {
for (int k = 1; k <= m; k++) {
if (col[j][k] - col[i - 1][k] != 0) continue;
int top = yr[i][k], bottom = yr[j][k], temp = yc[j][k];
ansF = (ansF + temp * top % mod * bottom % mod) % mod;
}
}
}
}
}
cout << ansC * c % mod << " ";
cout << ansF * f % mod << endl;
}
return 0;
}