#include<bits/stdc++.h>
using namespace std;
#define LET(x, a) __typeof(a) x(a)
#define TR(v, it) for(LET(it, v.begin()); it != v.end(); it++)
#define si(x) scanf("%d",&x)
#define F first
#define S second
#define PB push_back
#define MP make_pair
#define INF 1000000000
#define MOD 1000000007
#define SET(x,y) memset(x,y,sizeof(x));
#define LL long long int
#define ULL unsigned LL
#define PII pair<int, int>
int g[350][350];
int cval[350];
int mp[100000];
int main() {
int i, j, n, m, a, b, k;
LL x;
scanf("%d %d %d %d", &n, &m, &a, &b);
for (i = 0; i < n; i++) {
for (j = 0; j < m; j++) {
scanf("%Ld", &x);
g[i][j] = x % a;
}
}
LL ans = 0;
for (i = 0; i < n; i++) {
memset(cval, 0, sizeof(cval));
for (j = i; j < n; j++) {
mp[0]++;
int psum = 0, val;
for (k = 0; k < m; k++) {
cval[k] += g[j][k];
if (cval[k] >= a)
cval[k] -= a;
psum += cval[k];
if (psum >= a)
psum -= a;
val = psum - b;
if (val < 0)
val += a;
ans += mp[val];
mp[psum]++;
}
mp[0] --;
psum = 0;
for (k = 0; k < m; k++) {
psum += cval[k];
if (psum >= a)
psum -= a;
mp[psum]--;
}
}
}
cout << ans << endl;
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgTEVUKHgsIGEpICBfX3R5cGVvZihhKSB4KGEpCiNkZWZpbmUgVFIodiwgaXQpIGZvcihMRVQoaXQsIHYuYmVnaW4oKSk7IGl0ICE9IHYuZW5kKCk7IGl0KyspCiNkZWZpbmUgc2koeCkgc2NhbmYoIiVkIiwmeCkKI2RlZmluZSBGIGZpcnN0CiNkZWZpbmUgUyBzZWNvbmQKI2RlZmluZSBQQiBwdXNoX2JhY2sKI2RlZmluZSBNUCBtYWtlX3BhaXIKI2RlZmluZSBJTkYgMTAwMDAwMDAwMAojZGVmaW5lIE1PRCAxMDAwMDAwMDA3CiNkZWZpbmUgU0VUKHgseSkgbWVtc2V0KHgseSxzaXplb2YoeCkpOwojZGVmaW5lIExMIGxvbmcgbG9uZyBpbnQKI2RlZmluZSBVTEwgdW5zaWduZWQgTEwKI2RlZmluZSBQSUkgcGFpcjxpbnQsIGludD4KCmludCBnWzM1MF1bMzUwXTsKaW50IGN2YWxbMzUwXTsKaW50IG1wWzEwMDAwMF07CmludCBtYWluKCkgewogICAgaW50IGksIGosIG4sIG0sIGEsIGIsIGs7CiAgICBMTCB4OwogICAgc2NhbmYoIiVkICVkICVkICVkIiwgJm4sICZtLCAmYSwgJmIpOwogICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIGZvciAoaiA9IDA7IGogPCBtOyBqKyspIHsKICAgICAgICAgICAgc2NhbmYoIiVMZCIsICZ4KTsKICAgICAgICAgICAgZ1tpXVtqXSA9IHggJSBhOwogICAgICAgIH0KICAgIH0KICAgIExMIGFucyA9IDA7CiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgbWVtc2V0KGN2YWwsIDAsIHNpemVvZihjdmFsKSk7CiAgICAgICAgZm9yIChqID0gaTsgaiA8IG47IGorKykgewogICAgICAgICAgICBtcFswXSsrOwogICAgICAgICAgICBpbnQgcHN1bSA9IDAsIHZhbDsKICAgICAgICAgICAgZm9yIChrID0gMDsgayA8IG07IGsrKykgewogICAgICAgICAgICAgICAgY3ZhbFtrXSArPSBnW2pdW2tdOwogICAgICAgICAgICAgICAgaWYgKGN2YWxba10gPj0gYSkKICAgICAgICAgICAgICAgICAgICBjdmFsW2tdIC09IGE7CiAgICAgICAgICAgICAgICBwc3VtICs9IGN2YWxba107CiAgICAgICAgICAgICAgICBpZiAocHN1bSA+PSBhKQogICAgICAgICAgICAgICAgICAgIHBzdW0gLT0gYTsKICAgICAgICAgICAgICAgIHZhbCA9IHBzdW0gLSBiOwogICAgICAgICAgICAgICAgaWYgKHZhbCA8IDApCiAgICAgICAgICAgICAgICAgICAgdmFsICs9IGE7CiAgICAgICAgICAgICAgICBhbnMgKz0gbXBbdmFsXTsKICAgICAgICAgICAgICAgIG1wW3BzdW1dKys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbXBbMF0gLS07CiAgICAgICAgICAgIHBzdW0gPSAwOwogICAgICAgICAgICBmb3IgKGsgPSAwOyBrIDwgbTsgaysrKSB7CiAgICAgICAgICAgICAgICBwc3VtICs9IGN2YWxba107CiAgICAgICAgICAgICAgICBpZiAocHN1bSA+PSBhKQogICAgICAgICAgICAgICAgICAgIHBzdW0gLT0gYTsKICAgICAgICAgICAgICAgIG1wW3BzdW1dLS07CiAgICAgICAgICAgIH0KCiAgICAgICAgfQogICAgfQogICAgY291dCA8PCBhbnMgPDwgZW5kbDsKICAgIHJldHVybiAwOwp9Cg==