#include <bits/stdc++.h>
using namespace std;
const int INF = (int)1e9 + 100;
const long long lINF = 1e18;
const double EPS = 1e-12;
int myrand() { return rand(); }
long long rdtsc() {
  long long ans;
  asm("rdtsc" : "=A"(ans));
  return ans;
}
int rnd(int x) { return myrand() % x; }
int r, c, n, k;
vector<int> x, y;
bool read() {
  if (scanf("%d%d%d%d", &r, &c, &n, &k) < 4) {
    return false;
  }
  x = y = vector<int>(n);
  for (int i = 0; i < n; i++) {
    scanf("%d%d", &x[i], &y[i]);
    x[i]--, y[i]--;
  }
  return true;
}
void solve() {
  vector<pair<int, int> > hor(n), ver(n);
  for (int i = 0; i < n; i++) {
    hor[i] = make_pair(y[i], i);
    ver[i] = make_pair(x[i], i);
  }
  sort(hor.begin(), hor.end());
  sort(ver.begin(), ver.end());
  reverse(ver.begin(), ver.end());
  vector<int> nxt(n), pr(n);
  long long ans = 0;
  for (int it = 0; it < r; it++) {
    int cur = -1;
    for (int i = 0; i < n; i++) {
      int now = hor[i].second;
      if (x[now] >= it) {
        if (cur != -1) {
          nxt[cur] = now;
        }
        pr[now] = cur;
        cur = now;
      }
    }
    if (cur != -1) {
      nxt[cur] = -1;
    }
    int add = 0;
    for (int curx = r - 1, i = 0; curx >= it; curx--) {
      for (; i < n && ver[i].first >= curx; i++) {
        int now = ver[i].second;
        if (x[now] < it) {
          continue;
        }
        static int toright[15];
        for (int j = 0, cur = now; j <= k; j++) {
          toright[j] = (cur == -1) ? c : y[cur];
          cur = (cur == -1) ? -1 : nxt[cur];
        }
        for (int j = 0, cur = now; j < k && cur != -1; j++, cur = pr[cur]) {
          int y1 = y[cur];
          int y2 = (pr[cur] == -1) ? -1 : y[pr[cur]];
          add -= (y1 - y2) * (toright[k - j] - toright[k - j - 1]);
        }
        int a = pr[now], b = nxt[now];
        if (a != -1) {
          nxt[a] = b;
        }
        if (b != -1) {
          pr[b] = a;
        }
      }
      ans += add;
    }
    ans -= (long long)add * (r - it + 1);
  }
  printf(
      "%lld"
      "\n",
      ans);
}
int main() {
  srand(rdtsc());
  while (true) {
    if (!read()) {
      break;
    }
    solve();
    fprintf(stderr, "Time: %.18f\n", (double)clock() / CLOCKS_PER_SEC);
    fflush(stderr);
  }
  return 0;
}
