#include <bits/stdc++.h>
using namespace std;
long kx[] = {2, -2, 2, -2, 1, -1, 1, -1};
long ky[] = {1, 1, -1, -1, 2, 2, -2, -2};
long dx[] = {1, -1, 0, 0, 1, -1, 1, -1};
long dy[] = {0, 0, 1, -1, 1, 1, -1, -1};
const long INF = (1e9);
inline long MOD(long a, long b) {
  long res = a % b;
  return res < 0 ? res + abs(b) : res;
}
inline long Pow(long base, long exp) {
  long res = 1;
  while (exp > 0) {
    if (exp & 1) res *= base;
    exp >>= 1;
    base *= base;
  }
  return res;
}
inline long Log(long base, long n) {
  long ans = (long)(floor(log10((double)n) / log10((double)base)) + 1e-7);
  return ans;
}
inline long BigMod(long base, long exp, long M) {
  base = MOD(base, M);
  long res = 1;
  while (exp > 0) {
    if (exp & 1) res = MOD(res * base, M);
    exp >>= 1;
    base = MOD(base * base, M);
  }
  return res;
}
char mat[15][15];
long k;
bool func(long a, long b, long c, long d) {
  long cnt = 0, i, j;
  for (i = a; i <= c; i++) {
    for (j = b; j <= d; j++) {
      if (mat[i][j]) cnt++;
    }
  }
  if (cnt >= k) return true;
  return false;
}
int main() {
  long x, y, z, i, j, l, m, n, p, q, r, u, v, w, t, cas, edge, node, a, b, c, d,
      e, f, ans, cnt, ass;
  while (cin >> r >> c >> n >> k) {
    memset(mat, 0, sizeof(mat));
    for (i = 0; i < n; i++) {
      scanf("%ld %ld", &u, &v);
      u--, v--;
      mat[u][v] = 1;
    }
    cnt = 0;
    for (i = 0; i < r; i++) {
      for (j = 0; j < c; j++) {
        for (a = 0; a < r; a++) {
          for (b = 0; b < c; b++) {
            cnt += func(i, j, a, b);
          }
        }
      }
    }
    printf("%ld\n", cnt);
  }
  return 0;
}
