#include <bits/stdc++.h>
using namespace std;
inline int read() {
  int x = 0, f = 1;
  char ch = getchar();
  while (!isdigit(ch)) {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (isdigit(ch)) {
    x = x * 10 + ch - 48;
    ch = getchar();
  }
  return x * f;
}
const int mod = 1e9 + 7, N = 2e5 + 5;
int h, w, n, s, len;
long long inv[N], fac[N], f[2005][2005], ans;
inline long long fpow(long long x, long long y) {
  long long res = 1;
  while (y) {
    if (y & 1) res = res * x % mod;
    y >>= 1;
    x = x * x % mod;
  }
  return res % mod;
}
inline long long C(int n, int m) {
  return fac[n] * inv[n - m] % mod * inv[m] % mod;
}
struct node {
  int x, y;
} a[2005];
inline long long calc(node a, node b) {
  return C(a.x - b.x + a.y - b.y, a.x - b.x);
}
inline bool cmp(node a, node b) { return (a.x == b.x) ? a.y < b.y : a.x < b.x; }
int main() {
  h = read(), w = read(), n = read(), s = read();
  for (int i = (1); i <= (n); ++i) a[i].x = read(), a[i].y = read();
  sort(a + 1, a + n + 1, cmp);
  if (a[n].x != h || a[n].y != w) {
    a[++n] = {h, w};
  } else
    s = (s + 1) / 2;
  if (a[1].x != 1 || a[1].y != 1) {
    a[++n] = {1, 1};
    s *= 2;
  }
  int len = log2(s) + 1;
  sort(a + 1, a + n + 1, cmp);
  fac[0] = inv[0] = 1;
  for (int i = (1); i <= (h + w); ++i) fac[i] = fac[i - 1] * i % mod;
  inv[h + w] = fpow(fac[h + w], mod - 2);
  for (int i = h + w - 1; i >= 1; i--) inv[i] = inv[i + 1] * (i + 1) % mod;
  f[1][0] = 1;
  for (int i = (2); i <= (n); ++i) {
    f[i][1] = calc(a[i], a[1]);
    for (int k = (2); k <= (len); ++k) {
      for (int j = (1); j <= (i - 1); ++j) {
        if (a[j].y <= a[i].y) {
          long long tmp = calc(a[i], a[j]);
          f[i][k] += (f[j][k - 1] * tmp) % mod;
          f[i][k] %= mod;
          f[i][k] -= f[j][k] * tmp % mod;
          f[i][k] = (f[i][k] + mod) % mod;
        }
      }
    }
  }
  for (int i = (1); i <= (len); ++i) {
    s -= s / 2;
    ans = (ans + (f[n][i] - f[n][i + 1]) * s % mod + mod) % mod;
  }
  ans = (ans * fpow(calc(a[n], a[1]), mod - 2)) % mod;
  printf("%lld\n", ans);
  return 0;
}
