#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3F3F3F3F;
const int NEGINF = 0xC0C0C0C0;
const double EPS = 1e-8;
int cmp_double(double a, double b, double eps = 1e-9) {
  return a + eps > b ? b + eps > a ? 0 : 1 : -1;
}
inline void scanint(int &x) {
  register int c = getchar();
  x = 0;
  int neg = 0;
  for (; ((c < 48 || c > 57) && c != '-'); c = getchar())
    ;
  if (c == '-') {
    neg = 1;
    c = getchar();
  }
  for (; c > 47 && c < 58; c = getchar()) {
    x = (x << 1) + (x << 3) + c - 48;
  }
  if (neg) x = -x;
}
int main() {
  int L, C, N, K;
  cin >> L >> C >> N >> K;
  map<pair<int, int>, bool> pos;
  for (int i = 0; i < N; i++) {
    int l, c;
    cin >> l >> c;
    l--;
    c--;
    pos[{l, c}] = true;
  }
  vector<pair<int, int>> vet;
  for (int i = 0; i < L; i++) {
    for (int j = 0; j < C; j++) {
      vet.push_back({i, j});
    }
  }
  long long ans = 0;
  for (int k = 0; k < vet.size(); k++) {
    auto st = vet[k];
    for (int z = 0; z < vet.size(); z++) {
      auto nd = vet[z];
      if (nd.first < st.first) continue;
      if (nd.second < st.second) continue;
      int cnt = 0;
      for (int i = st.first; i <= nd.first; i++) {
        for (int j = st.second; j <= nd.second; j++) {
          if (pos.find(make_pair(i, j)) != pos.end()) cnt++;
        }
      }
      if (cnt >= K) ans++;
    }
  }
  cout << ans << endl;
  return 0;
}
