#include <bits/stdc++.h>
using namespace std;
int pre[3050], suf[3050];
int cur[3050], cnt[3050], dl[3050];
int n, k, r, c;
long long ans = 0;
vector<int> pos[3050];
set<int> st;
int main() {
  scanf("%d%d%d%d", &r, &c, &n, &k);
  for (int i = 1; i <= n; ++i) {
    int x, y;
    scanf("%d%d", &x, &y);
    pos[x].push_back(y);
  }
  for (int i = 1; i <= r; ++i) sort(pos[i].begin(), pos[i].end());
  for (int i = 1; i <= r; ++i) {
    st.clear();
    st.insert(0);
    st.insert(c + 1);
    memset(pre, 0, sizeof(pre));
    memset(suf, 0, sizeof(suf));
    memset(cnt, 0, sizeof(cnt));
    memset(cur, 0, sizeof(cur));
    memset(dl, 0, sizeof(dl));
    pre[0] = -1;
    suf[0] = c + 1;
    pre[c + 1] = 0;
    suf[c + 1] = -1;
    long long tmp = 0;
    for (int j = i; j <= r; ++j) {
      for (auto p : pos[j]) {
        if (st.find(p) != st.end()) {
          if (dl[p] >= k) tmp -= 1ll * (c - cur[p] + 1) * (p - pre[p]);
          cnt[p]++;
          for (int fk = pre[p]; fk > 0 && (dl[fk] < k || cur[fk] >= p);
               fk = pre[fk]) {
            if (dl[fk] < k) {
              dl[fk]++;
              if (cur[fk] < p) cur[fk] = p;
              if (dl[fk] >= k) tmp += 1ll * (c - cur[fk] + 1) * (fk - pre[fk]);
            } else {
              dl[fk]++;
              if (dl[fk] - cnt[cur[fk]] >= k) {
                tmp -= 1ll * (c - cur[fk] + 1) * (fk - pre[fk]);
                dl[fk] -= cnt[cur[fk]];
                cur[fk] = pre[cur[fk]];
                tmp += 1ll * (c - cur[fk] + 1) * (fk - pre[fk]);
              }
            }
          }
          int tp, cc = 0;
          for (int i = p; i != c + 1; i = suf[i]) {
            cc += cnt[i];
            tp = i;
            if (cc >= k) break;
          }
          dl[p] = cc;
          cur[p] = tp;
          if (dl[p] >= k) tmp += 1ll * (c - cur[p] + 1) * (p - pre[p]);
        } else {
          int pr = *(--st.lower_bound(p));
          int nx = *(st.lower_bound(p));
          st.insert(p);
          suf[p] = nx;
          pre[p] = pr;
          if (dl[nx] >= k) tmp -= 1ll * (c - cur[nx] + 1) * (nx - pre[nx]);
          suf[pr] = pre[nx] = p;
          if (dl[nx] >= k) tmp += 1ll * (c - cur[nx] + 1) * (nx - pre[nx]);
          cnt[p] = 1;
          for (int fk = pre[p]; fk > 0 && (dl[fk] < k || cur[fk] >= p);
               fk = pre[fk]) {
            if (dl[fk] < k) {
              dl[fk]++;
              if (cur[fk] < p) cur[fk] = p;
              if (dl[fk] >= k) tmp += 1ll * (c - cur[fk] + 1) * (fk - pre[fk]);
            } else {
              dl[fk]++;
              if (dl[fk] - cnt[cur[fk]] >= k) {
                tmp -= 1ll * (c - cur[fk] + 1) * (fk - pre[fk]);
                dl[fk] -= cnt[cur[fk]];
                cur[fk] = pre[cur[fk]];
                tmp += 1ll * (c - cur[fk] + 1) * (fk - pre[fk]);
              }
            }
          }
          int tp, cc = 0;
          for (int i = p; i != c + 1; i = suf[i]) {
            cc += cnt[i];
            tp = i;
            if (cc >= k) break;
          }
          dl[p] = cc;
          cur[p] = tp;
          if (dl[p] >= k) tmp += 1ll * (c - cur[p] + 1) * (p - pre[p]);
        }
      }
      ans += tmp;
    }
  }
  printf("%lld\n", ans);
}
