#include<bits/stdc++.h>
using namespace std;
// define
#define execute cerr << " Time: " << fixed << setprecision(6) << (1.0 * clock() / CLOCKS_PER_SEC) << "s\n";
#define ll long long
#define ii pair <int , int>
#define iii pair <int , ii>
#define se second
#define fi first
#define all(v) (v).begin() , (v).end()
#define Unique(v) sort(all(v)) , v.resize(unique(all(v)) - v.begin())
#define bit(x,i) (((x) >> (i)) & 1LL)
#define flip(x,i) ((x) ^ (1LL << (i)))
#define ms(d,x) memset(d , x , sizeof(d))
#define exist __exist
#define ends __ends
#define visit visited
#define left __left
#define right __right
#define prev __prev
#define next __next
#define sitingfake 1
#define orz 1
//constant
const long long mod = 1e9 + 7;
const long long linf = 4557430888798830399LL;
const long long nlinf = -4485090715960753727LL;
const int inf = 1061109567;
const int ninf = -1044266559;
const int dx[] = {0 , -1 , 0 , 1};
const int dy[] = {-1 , 0 , 1 , 0};
template<typename T> bool maximize(T &a, const T &b)
{
if(a < b) {a = b; return 1;}
return 0;
}
template<typename T> bool minimize(T &a, const T &b)
{
if(a > b) {a = b; return 1;}
return 0;
}
void Plus(ll & a ,ll b)
{
b %= mod;
a += b;
if(a < 0) a += mod;
a %= mod;
return;
}
void Mul(ll & a, ll b)
{
(a *= (b % mod)) %= mod;
return;
}
//code
const int maxn = 5055;
int r , c , n , k;
ii a[maxn];
int st[4 * maxn] , lazy[4 * maxn];
vector <int> P[maxn];
ll id[maxn];
int numy;
void Compress()
{
vector <int> p;
for(int i = 1; i <= n; i++)
{
p.push_back(a[i].se);
}
Unique(p);
for(int i = 1; i <= n; i++)
{
a[i].se = lower_bound(all(p) , a[i].se) - p.begin() + 1;
}
numy = p.size();
for(int i = 1; i <= numy; i++)
{
id[i] = p[i - 1];
}
id[numy + 1] = c + 1;
}
void Push(int i)
{
if(lazy[i] != 0)
{
st[i * 2] += lazy[i];
st[i * 2 + 1] += lazy[i];
lazy[i * 2 + 1] += lazy[i];
lazy[i * 2] += lazy[i];
lazy[i] = 0;
return;
}
}
void up(int i , int l , int r , int u , int v)
{
if(u > r || v < l) return;
if(u <= l && r <= v)
{
st[i]++;
lazy[i]++;
return;
}
Push(i);
int mid = (r + l) >> 1;
up(i * 2 , l , mid , u , v);
up(i * 2 + 1 , mid + 1 , r , u , v);
st[i] = max(st[i * 2] , st[i * 2 + 1]);
}
ii walk(int i , int l , int r , int val)
{
if(st[i] < val) return ii(-1 , -1);
if(l == r)
{
return ii(st[i] , l);
}
Push(i);
int mid = (r + l) >> 1;
if(st[i * 2] >= val) return walk(i * 2 , l , mid , val);
return walk(i * 2 + 1 , mid + 1 , r , val);
}
int getPos(int i , int l ,int r ,int pos)
{
if(l == r) return st[i];
int mid = (r + l) >> 1;
Push(i);
if(pos <= mid) return getPos(i * 2 , l , mid , pos);
return getPos(i * 2 + 1 , mid + 1 , r , pos);
}
void reset()
{
for(int i = 1; i <= 4 * (numy + 2); i++) st[i] = lazy[i] = 0;
}
void debug()
{
for(int i = 0; i <= c; i++)
{
cout << getPos(1 , 0 , c , i) << " ";
}
cout << endl;
}
ll Compute(int start)
{
reset();
ll goodpairs = (1ll * c * (c + 1)) / 2;
//cout << goodpairs << endl;
ll sum = 0;
for(int i = start; i <= r; i++)
{
for(int pos : P[i])
{
int orgVal = getPos(1 , 0 , numy , pos);
int curPos = pos;
int curVal = orgVal;
int lim = curVal + k - 1;
while(curVal <= lim && curPos <= numy)
{
int target = curVal - k + 1;
ii right = walk(1 , 0 , numy , curVal + 1);
if(right.se == -1) right.se = numy + 1;
if(target >= 0)
{
if(target == orgVal)
{
int left = walk(1 , 0 , numy , target).se;
goodpairs -= (id[pos] - id[left]) * (id[right.se] - id[curPos]);
}
else
{
ii l1 = walk(1 , 0 , numy , target);
if(l1.fi == target)
{
ii r1 = walk(1 , 0 , numy , target + 1);
goodpairs -= (id[r1.se] - id[l1.se]) * (id[right.se] - id[curPos]);
}
}
}
if(right.fi == -1) break;
curPos = right.se;
curVal = right.fi;
}
up(1 , 0 , numy , pos , numy);
}
//debug();
sum += goodpairs;
}
return sum;
}
void solve(void)
{
cin >> r >> c >> n >> k;
if(k == 0)
{
cout << ((1ll * r * (r + 1)) / 2) * ((1ll * c * (c + 1)) / 2);
return;
}
for(int i = 1; i <= n; i++)
{
cin >> a[i].fi >> a[i].se;
}
Compress();
for(int i = 1; i <= n; i++) P[a[i].fi].push_back(a[i].se);
for(int i = 1; i <= r; i++) sort(all(P[i]));
ll ans = 0;
for(int i = 1; i <= r; i++)
{
ans += Compute(i);
}
//cout << ans;
cout << ((1ll * r * (r + 1)) / 2) * ((1ll * c * (c + 1)) / 2) - ans;
}
/**
.XXX.
..X..
**/
signed main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
#define task "recs"
if(fopen(task".inp","r"))
{
freopen(task".inp","r",stdin);
freopen(task".out","w",stdout);
}
int tc = 1;
// cin >> tc;
while(tc--) solve();
execute;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vIGRlZmluZQoKI2RlZmluZSBleGVjdXRlIGNlcnIgPDwgIiBUaW1lOiAiIDw8IGZpeGVkIDw8IHNldHByZWNpc2lvbig2KSA8PCAoMS4wICogY2xvY2soKSAvIENMT0NLU19QRVJfU0VDKSA8PCAic1xuIjsKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBpaSBwYWlyIDxpbnQgLCBpbnQ+CiNkZWZpbmUgaWlpIHBhaXIgPGludCAsIGlpPgojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgYWxsKHYpICh2KS5iZWdpbigpICwgKHYpLmVuZCgpCiNkZWZpbmUgVW5pcXVlKHYpIHNvcnQoYWxsKHYpKSAsIHYucmVzaXplKHVuaXF1ZShhbGwodikpIC0gdi5iZWdpbigpKQojZGVmaW5lIGJpdCh4LGkpICgoKHgpID4+IChpKSkgJiAxTEwpCiNkZWZpbmUgZmxpcCh4LGkpICgoeCkgXiAoMUxMIDw8IChpKSkpCiNkZWZpbmUgbXMoZCx4KSBtZW1zZXQoZCAsIHggLCBzaXplb2YoZCkpCiNkZWZpbmUgZXhpc3QgX19leGlzdAojZGVmaW5lIGVuZHMgX19lbmRzCiNkZWZpbmUgdmlzaXQgdmlzaXRlZAojZGVmaW5lIGxlZnQgX19sZWZ0CiNkZWZpbmUgcmlnaHQgX19yaWdodAojZGVmaW5lIHByZXYgX19wcmV2CiNkZWZpbmUgbmV4dCBfX25leHQKI2RlZmluZSBzaXRpbmdmYWtlIDEKI2RlZmluZSBvcnogMQovL2NvbnN0YW50Cgpjb25zdCBsb25nIGxvbmcgbW9kID0gMWU5ICsgNzsKY29uc3QgbG9uZyBsb25nIGxpbmYgPSA0NTU3NDMwODg4Nzk4ODMwMzk5TEw7CmNvbnN0IGxvbmcgbG9uZyBubGluZiA9IC00NDg1MDkwNzE1OTYwNzUzNzI3TEw7CmNvbnN0IGludCBpbmYgPSAxMDYxMTA5NTY3Owpjb25zdCBpbnQgbmluZiA9IC0xMDQ0MjY2NTU5Owpjb25zdCBpbnQgZHhbXSA9IHswICwgLTEgLCAwICwgMX07CmNvbnN0IGludCBkeVtdID0gey0xICwgMCAsIDEgLCAwfTsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgbWF4aW1pemUoVCAmYSwgY29uc3QgVCAmYikKewogICAgaWYoYSA8IGIpIHthID0gYjsgcmV0dXJuIDE7fQogICAgcmV0dXJuIDA7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgbWluaW1pemUoVCAmYSwgY29uc3QgVCAmYikKewogICAgaWYoYSA+IGIpIHthID0gYjsgcmV0dXJuIDE7fQogICAgcmV0dXJuIDA7Cn0KCnZvaWQgUGx1cyhsbCAmIGEgLGxsIGIpCnsKICAgIGIgJT0gbW9kOwogICAgYSArPSBiOwogICAgaWYoYSA8IDApIGEgKz0gbW9kOwogICAgYSAlPSBtb2Q7CiAgICByZXR1cm47Cn0KCnZvaWQgTXVsKGxsICYgYSwgbGwgYikKewogICAgKGEgKj0gKGIgJSBtb2QpKSAlPSBtb2Q7CiAgICByZXR1cm47Cn0KCi8vY29kZQpjb25zdCBpbnQgbWF4biA9IDUwNTU7CgppbnQgciAsIGMgLCBuICwgazsKCmlpIGFbbWF4bl07CmludCBzdFs0ICogbWF4bl0gLCBsYXp5WzQgKiBtYXhuXTsKdmVjdG9yIDxpbnQ+IFBbbWF4bl07CmxsIGlkW21heG5dOwppbnQgbnVteTsKCnZvaWQgQ29tcHJlc3MoKQp7CiAgICB2ZWN0b3IgPGludD4gcDsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKQogICAgewogICAgICAgIHAucHVzaF9iYWNrKGFbaV0uc2UpOwogICAgfQogICAgVW5pcXVlKHApOwogICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspCiAgICB7CiAgICAgICAgYVtpXS5zZSA9IGxvd2VyX2JvdW5kKGFsbChwKSAsIGFbaV0uc2UpIC0gcC5iZWdpbigpICsgMTsKICAgIH0KICAgIG51bXkgPSBwLnNpemUoKTsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbnVteTsgaSsrKQogICAgewogICAgICAgIGlkW2ldID0gcFtpIC0gMV07CiAgICB9CiAgICBpZFtudW15ICsgMV0gPSBjICsgMTsKfQoKdm9pZCBQdXNoKGludCBpKQp7CiAgICBpZihsYXp5W2ldICE9IDApCiAgICB7CiAgICAgICAgc3RbaSAqIDJdICs9IGxhenlbaV07CiAgICAgICAgc3RbaSAqIDIgKyAxXSArPSBsYXp5W2ldOwogICAgICAgIGxhenlbaSAqIDIgKyAxXSArPSBsYXp5W2ldOwogICAgICAgIGxhenlbaSAqIDJdICs9IGxhenlbaV07CiAgICAgICAgbGF6eVtpXSA9IDA7CiAgICAgICAgcmV0dXJuOwogICAgfQp9CnZvaWQgdXAoaW50IGkgLCBpbnQgbCAsIGludCByICwgaW50IHUgLCBpbnQgdikKewogICAgaWYodSA+IHIgfHwgdiA8IGwpIHJldHVybjsKICAgIGlmKHUgPD0gbCAmJiByIDw9IHYpCiAgICB7CiAgICAgICAgc3RbaV0rKzsKICAgICAgICBsYXp5W2ldKys7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgUHVzaChpKTsKICAgIGludCBtaWQgPSAociArIGwpID4+IDE7CiAgICB1cChpICogMiAgLCBsICwgbWlkICwgdSAsIHYpOwogICAgdXAoaSAqIDIgKyAxICwgbWlkICsgMSAsIHIgLCB1ICwgdik7CiAgICBzdFtpXSA9IG1heChzdFtpICogMl0gLCBzdFtpICogMiArIDFdKTsKfQoKaWkgd2FsayhpbnQgaSAsIGludCBsICwgaW50IHIgLCBpbnQgdmFsKQp7CiAgICBpZihzdFtpXSA8IHZhbCkgcmV0dXJuIGlpKC0xICwgLTEpOwogICAgaWYobCA9PSByKQogICAgewogICAgICAgIHJldHVybiBpaShzdFtpXSAsIGwpOwogICAgfQogICAgUHVzaChpKTsKICAgIGludCBtaWQgPSAociArIGwpID4+IDE7CiAgICBpZihzdFtpICogMl0gPj0gdmFsKSByZXR1cm4gd2FsayhpICogMiAsIGwgLCBtaWQgLCB2YWwpOwogICAgcmV0dXJuIHdhbGsoaSAqIDIgKyAxICwgbWlkICsgMSAsIHIgLCB2YWwpOwp9CgppbnQgZ2V0UG9zKGludCBpICwgaW50IGwgLGludCByICxpbnQgcG9zKQp7CiAgICBpZihsID09IHIpIHJldHVybiBzdFtpXTsKICAgIGludCBtaWQgPSAociArIGwpID4+IDE7CiAgICBQdXNoKGkpOwogICAgaWYocG9zIDw9IG1pZCkgcmV0dXJuIGdldFBvcyhpICogMiAsIGwgLCBtaWQgLCBwb3MpOwogICAgcmV0dXJuIGdldFBvcyhpICogMiArIDEgLCBtaWQgKyAxICwgciAsIHBvcyk7Cn0KCnZvaWQgcmVzZXQoKQp7CiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IDQgKiAobnVteSArIDIpOyBpKyspIHN0W2ldID0gbGF6eVtpXSA9IDA7Cn0KCnZvaWQgZGVidWcoKQp7CiAgICBmb3IoaW50IGkgPSAwOyBpIDw9IGM7IGkrKykKICAgIHsKICAgICAgICBjb3V0IDw8IGdldFBvcygxICwgMCAsIGMgLCBpKSA8PCAiICI7CiAgICB9CiAgICBjb3V0IDw8IGVuZGw7Cn0KCmxsIENvbXB1dGUoaW50IHN0YXJ0KQp7CiAgICByZXNldCgpOwogICAgbGwgZ29vZHBhaXJzID0gKDFsbCAqIGMgKiAoYyArIDEpKSAvIDI7CgogICAgLy9jb3V0IDw8IGdvb2RwYWlycyA8PCBlbmRsOwogICAgbGwgc3VtID0gMDsKCiAgICBmb3IoaW50IGkgPSBzdGFydDsgaSA8PSByOyBpKyspCiAgICB7CiAgICAgICAgZm9yKGludCBwb3MgOiBQW2ldKQogICAgICAgIHsKICAgICAgICAgICAgaW50IG9yZ1ZhbCA9IGdldFBvcygxICwgMCAsIG51bXkgLCBwb3MpOwogICAgICAgICAgICBpbnQgY3VyUG9zID0gcG9zOwogICAgICAgICAgICBpbnQgY3VyVmFsID0gb3JnVmFsOwogICAgICAgICAgICBpbnQgbGltID0gY3VyVmFsICsgayAtIDE7CiAgICAgICAgICAgIHdoaWxlKGN1clZhbCA8PSBsaW0gJiYgY3VyUG9zIDw9IG51bXkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGludCB0YXJnZXQgPSBjdXJWYWwgLSBrICsgMTsKICAgICAgICAgICAgICAgIGlpIHJpZ2h0ID0gd2FsaygxICwgMCAsIG51bXkgLCBjdXJWYWwgKyAxKTsKICAgICAgICAgICAgICAgIGlmKHJpZ2h0LnNlID09IC0xKSByaWdodC5zZSA9IG51bXkgKyAxOwogICAgICAgICAgICAgICAgaWYodGFyZ2V0ID49IDApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWYodGFyZ2V0ID09IG9yZ1ZhbCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZWZ0ID0gd2FsaygxICwgMCAsIG51bXkgLCB0YXJnZXQpLnNlOwogICAgICAgICAgICAgICAgICAgICAgICBnb29kcGFpcnMgLT0gKGlkW3Bvc10gLSBpZFtsZWZ0XSkgKiAoaWRbcmlnaHQuc2VdIC0gaWRbY3VyUG9zXSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlpIGwxID0gd2FsaygxICwgMCAsIG51bXkgLCB0YXJnZXQpOwogICAgICAgICAgICAgICAgICAgICAgICBpZihsMS5maSA9PSB0YXJnZXQpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlpIHIxID0gd2FsaygxICwgMCAsIG51bXkgLCB0YXJnZXQgKyAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvb2RwYWlycyAtPSAoaWRbcjEuc2VdIC0gaWRbbDEuc2VdKSAqIChpZFtyaWdodC5zZV0gLSBpZFtjdXJQb3NdKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmKHJpZ2h0LmZpID09IC0xKSBicmVhazsKICAgICAgICAgICAgICAgIGN1clBvcyA9IHJpZ2h0LnNlOwogICAgICAgICAgICAgICAgY3VyVmFsID0gcmlnaHQuZmk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdXAoMSAsIDAgLCBudW15ICwgcG9zICwgbnVteSk7CiAgICAgICAgfQogICAgICAgIC8vZGVidWcoKTsKICAgICAgICBzdW0gKz0gZ29vZHBhaXJzOwogICAgfQogICAgcmV0dXJuIHN1bTsKfQp2b2lkIHNvbHZlKHZvaWQpCnsKICAgIGNpbiA+PiByID4+IGMgPj4gbiA+PiBrOwogICAgaWYoayA9PSAwKQogICAgewogICAgICAgIGNvdXQgPDwgKCgxbGwgKiByICogKHIgKyAxKSkgLyAyKSAqICgoMWxsICogYyAqIChjICsgMSkpIC8gMik7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspCiAgICB7CiAgICAgICAgY2luID4+IGFbaV0uZmkgPj4gYVtpXS5zZTsKICAgIH0KICAgIENvbXByZXNzKCk7CiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgUFthW2ldLmZpXS5wdXNoX2JhY2soYVtpXS5zZSk7CiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IHI7IGkrKykgc29ydChhbGwoUFtpXSkpOwogICAgbGwgYW5zID0gMDsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gcjsgaSsrKQogICAgewogICAgICAgIGFucyArPSBDb21wdXRlKGkpOwogICAgfQogICAgLy9jb3V0IDw8IGFuczsKICAgIGNvdXQgPDwgKCgxbGwgKiByICogKHIgKyAxKSkgLyAyKSAqICgoMWxsICogYyAqIChjICsgMSkpIC8gMikgLSBhbnM7Cn0KLyoqCi5YWFguCi4uWC4uCioqLwpzaWduZWQgbWFpbigpCnsKICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgY2luLnRpZSgwKTsKICAgY291dC50aWUoMCk7CgogICAjZGVmaW5lIHRhc2sgInJlY3MiCgogICBpZihmb3Blbih0YXNrIi5pbnAiLCJyIikpCiAgIHsKICAgICAgIGZyZW9wZW4odGFzayIuaW5wIiwiciIsc3RkaW4pOwogICAgICAgZnJlb3Blbih0YXNrIi5vdXQiLCJ3IixzdGRvdXQpOwogICB9CgogICBpbnQgdGMgPSAxOwovLyAgIGNpbiA+PiB0YzsKICAgd2hpbGUodGMtLSkgc29sdmUoKTsKCiAgIGV4ZWN1dGU7Cn0KCgoK