a了前4个点
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll T, n, m, c, f, d[2002][2002], e[2002][2002], ansc[2002][2002], ansf[2002][2002], anscc, ansff;
bool mp[2002][2002];
char tt;
bool check(ll x, ll y) {
if (x + 2 > n) return 0;
if (mp[x][y] || mp[x + 1][y] || mp[x + 2][y]) return 0;
return 1;
}
int main() {
cin >> T >> n;
while (T -- ) {
cin >> n >> m >> c >> f;
anscc = ansff = 0;
for (ll i = 1; i <= n; i ++ ) for (ll j = 1; j <= m; j ++ ) cin >> tt, mp[i][j] = tt - '0';
for (ll i = 1; i <= n; i ++ ) for (ll j = m; j; j -- ) d[i][j] = (mp[i][j] ? 0 : d[i][j + 1] + 1);
for (ll j = 1; j <= m; j ++ ) for (ll i = n; i; i -- ) e[i][j] = (mp[i][j] ? 0 : e[i + 1][j] + 1);
for (ll j = 1; j <= m; j ++ ) for (ll i = n; i; i -- ) ansc[i][j] = (mp[i][j] ? 0 : ansc[i + 1][j] + max(0ll, d[i][j] - 1));
for (ll i = 1; i <= n; i ++ ) for (ll j = 1; j <= m; j ++ ) if (check(i, j)) anscc += max(0ll, (ansc[i][j] - max(0ll, d[i + 1][j] - 1) - max(0ll, d[i][j] - 1))) * max(0ll, d[i][j] - 1);
for (ll j = 1; j <= m; j ++ ) for (ll i = n; i; i -- ) ansf[i][j] = (mp[i][j] ? 0 : ansf[i + 1][j] + max(0ll, d[i][j] - 1) * max(0ll, e[i][j] - 1));
for (ll i = 1; i <= n; i ++ ) for (ll j = 1; j <= m; j ++ ) if (check(i, j)) ansff += max(0ll, (ansf[i][j] - max(0ll, d[i + 1][j] - 1) * max(0ll, e[i + 1][j] - 1) - max(0ll, d[i][j] - 1) * max(0ll, e[i][j] - 1))) * max(0ll, d[i][j] - 1);
cout << anscc * c << ' ' << ansff * f << endl;
}
}