#include <bits/stdc++.h>
using namespace std;
inline int read() {
  int jg = 0, jk = getchar() - '0';
  while (jk < 0 || jk > 9) jk = getchar() - '0';
  while (jk >= 0 && jk <= 9) jg *= 10, jg += jk, jk = getchar() - '0';
  return jg;
}
const int mod = 1e9 + 7;
const int sj = 200010;
long long fac[sj], inv[sj], f[2010][25], all, ans;
int n, m, k, s, bin[25], vl[25], top, mx;
struct point {
  int xa, ya;
} p[2010];
int comp(const point& x, const point& y) {
  return (x.xa == y.xa) ? (x.ya < y.ya) : (x.xa < y.xa);
}
long long ksm(long long x, int y) {
  long long ret = 1;
  while (y) {
    if (y & 1) ret = ret * x % mod;
    x = x * x % mod, y >>= 1;
  }
  return ret;
}
inline long long c(int x, int y) {
  return fac[x] * inv[y] % mod * inv[x - y] % mod;
}
int main() {
  n = read(), m = read(), k = read(), s = read();
  for (int i = 1; i <= k; i++) p[i].xa = read(), p[i].ya = read();
  sort(p + 1, p + k + 1, comp);
  p[++k].xa = n, p[k].ya = m;
  bin[0] = fac[0] = 1, vl[0] = s;
  for (int i = 1; i <= 20; i++) {
    bin[i] = bin[i - 1] << 1, vl[i] = ceil((double)s / bin[i]);
    if (vl[i] == 1 && !top) top = i;
  }
  mx = n + m;
  for (int i = 1; i <= mx; i++) fac[i] = fac[i - 1] * i % mod;
  inv[mx] = ksm(fac[mx], mod - 2);
  for (int i = mx; i >= 1; i--) inv[i - 1] = inv[i] * i % mod;
  for (int i = 1; i <= k; i++)
    for (int j = 1; j <= top; j++) {
      f[i][j] = c(p[i].xa + p[i].ya - 2, p[i].ya - 1);
      for (int l = 1; l < i; l++)
        if (p[l].ya <= p[i].ya)
          f[i][j] =
              (f[i][j] -
               f[l][j] *
                   c(p[i].ya - p[l].ya + p[i].xa - p[l].xa, p[i].xa - p[l].xa) %
                   mod +
               mod) %
              mod;
      for (int l = 1; l < j; l++) f[i][j] = (f[i][j] - f[i][l] + mod) % mod;
    }
  all = c(n + m - 2, n - 1);
  for (int j = 1; j <= top; j++) {
    all = (all - f[k][j] + mod) % mod;
    ans = (ans + vl[j - 1] * f[k][j]) % mod;
  }
  ans = (ans + all) % mod;
  ans = ans * ksm(c(n + m - 2, n - 1), mod - 2) % mod;
  printf("%I64d", ans);
  return 0;
}
