#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2005;
const int MAXNUM = 1e6 + 5;
const long long MOD = 1e9 + 7;
long long Pow(long long a, long long b, long long mod = MOD) {
  long long result = 1;
  while (b) {
    if (b & 1) {
      result *= a;
      result %= mod;
    }
    a *= a;
    a %= mod;
    b /= 2;
  }
  return result;
}
long long fac[MAXNUM], inv[MAXNUM];
void PreCom() {
  fac[0] = 1;
  for (int i = 1; i <= MAXNUM - 1; ++i) {
    fac[i] = fac[i - 1] * i % MOD;
  }
  inv[MAXNUM - 1] = Pow(fac[MAXNUM - 1], MOD - 2);
  for (int i = MAXNUM - 2; i >= 0; --i) {
    inv[i] = inv[i + 1] * (i + 1) % MOD;
  }
}
long long C(int n, int m) {
  if (n < m) {
    return 0;
  }
  return fac[n] * inv[m] % MOD * inv[n - m] % MOD;
}
int n, m, k, s;
struct Point {
  int x, y;
} point[MAXN];
bool Cmp(Point a, Point b) {
  if (a.x == b.x) {
    return a.y < b.y;
  }
  return a.x < b.x;
}
long long f[MAXN][23];
int arr[23];
int main() {
  scanf("%d%d%d%d", &n, &m, &k, &s);
  PreCom();
  point[0].x = 1;
  point[0].y = 1;
  for (int i = 1; i <= k; ++i) {
    scanf("%d%d", &point[i].x, &point[i].y);
  }
  point[k + 1].x = n;
  point[k + 1].y = m;
  sort(point + 1, point + 1 + k, Cmp);
  f[0][0] = 1;
  for (int i = 1; i <= k + 1; ++i) {
    for (int j = 0; j <= i - 1; ++j) {
      if (point[j].x <= point[i].x && point[j].y <= point[i].y) {
        int len = point[i].x - point[j].x + 1;
        int wide = point[i].y - point[j].y + 1;
        long long c = C(len + wide - 2, len - 1);
        for (int p = 1; p <= 22; ++p) {
          f[i][p] += f[j][p - 1] * c % MOD;
          f[i][p] %= MOD;
        }
      }
    }
    for (int p = 1; p <= 22; ++p) {
      f[i][p] -= f[i][p + 1];
      f[i][p] += MOD;
      f[i][p] %= MOD;
    }
  }
  arr[1] = s;
  for (int i = 2; i <= 21; ++i) {
    arr[i] = (arr[i - 1] + 1) / 2;
  }
  long long all = C(n + m - 2, n - 1);
  long long answer = 0;
  for (int i = 1; i <= 21; ++i) {
    answer += f[k + 1][i] * arr[i];
    all -= f[k + 1][i];
    all %= MOD;
    all += MOD;
    all %= MOD;
    answer %= MOD;
  }
  answer += all;
  answer %= MOD;
  printf("%lld\n", answer * Pow(C(n + m - 2, n - 1), MOD - 2) % MOD);
  return 0;
}
