RT 有WA
#include <bits/stdc++.h>
using namespace std;
const long long int N = 998244353;
int T, id;
long long int n, m, ci, fi;
char a[1010][1010];
long long int f[1010][1010];
long long int cf[1010], ff[1010], ft[1010];
long long int cnum, fnum;
int main() {
cin >> T >> id;
while (T > 0) {
T--;
cin >> n >> m >> ci >> fi;
memset (a, 0, sizeof(a));
memset (f, 0, sizeof(f));
memset (cf, 0, sizeof(cf));
memset (ff, 0, sizeof(cf));
cnum = fnum = 0;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
cin >> a[i][j];
}
}
for (int i = 1; i <= n; i++) {
for (int j = m; j >= 1; j--) {
if (a[i][j] == '1') f[i][j] = -1;
else if (a[i][j + 1] == '0') f[i][j] = f[i][j + 1] + 1;
}
}
// Find C&F;
for (int j = 1; j <= m; j++) {
int t = 1;
for (int i = 1; i <= n + 1; i++) {
if (f[i][j] == -1 || i == n + 1) {
for (long long int x = 1; x <= n; x++) {
for (long long int y = x + 2; y <= n; y++) {
cnum = cnum % N + (1ll * cf[x] * cf[y]) % N;
//cout << cf[x] <<' ' << cf[y] << ' ' << cnum << endl;
}
}
for (long long int x = 1; x<= n; x++) {
for (long long int y = x + 2; y <= n; y++) {
fnum = fnum % N + (1ll * ff[x] * ff[y] * ft[y]) % N;
//cout << ff[x] <<" " << ff[y] << ' ' << ft[y] <<' '<< cnum << endl;
}
}
memset (cf, 0, sizeof(cf));
memset (ff, 0, sizeof(ff));
memset (ft, 0, sizeof(ft));
t = 1;
continue;
}
if (a[i][j] > 0) {
cf[i] = f[i][j] % N;
if (a[i + 1][j] >= 0 && i + 1 <= n) ff[i] = f[i][j] % N;
for (int k = i + 1; k <= n; k++) {
if (a[k][j] == '0') ft[i]++;
else break;
}
}
}
}
cnum = ((cnum % N) * (ci % N)) % N;
fnum = ((fnum % N) * (fi % N)) % N;
cout << cnum << ' ' << fnum;
}
return 0;
}