#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:102400000,102400000")
using namespace std;
const int block_size = 360;
const int maxn = 100010;
const long long mod = 1e9 + 7;
const long double eps = 1e-9;
template <typename T>
int sign(const T& a) {
  if (a < 0) {
    return -1;
  }
  if (a > 0) {
    return 1;
  }
  return 0;
}
long long cross_product(const complex<long long>& from, complex<long long> a,
                        complex<long long> b) {
  a -= from;
  b -= from;
  return a.imag() * b.real() - a.real() - b.imag();
}
bool shuzu[15][15];
int r, c, n, k;
void read() {
  scanf("%d", &r);
  scanf("%d", &c);
  scanf("%d", &n);
  scanf("%d", &k);
  for (long long i = 0; i < n; i++) {
    int a, b;
    scanf("%d", &a);
    scanf("%d", &b);
    a--;
    b--;
    shuzu[a][b] = 1;
  }
}
void solve() {
  int way = 0;
  for (long long sx = 0; sx < r; sx++) {
    for (long long bx = sx; bx < r; bx++) {
      for (long long sy = 0; sy < c; sy++) {
        for (long long by = sy; by < c; by++) {
          int cnt = 0;
          for (long long i = 0; i < r; i++) {
            for (long long j = 0; j < c; j++) {
              if (i >= sx && i <= bx && j >= sy && j <= by) {
                cnt += shuzu[i][j];
              }
            }
          }
          way += (cnt >= k);
        }
      }
    }
  }
  cout << way;
}
int main() {
  read();
  solve();
  return 0;
}
