#include <bits/stdc++.h>
using namespace std;
const long long INF = 1e9;
const long long MOD = 1e9 + 7;
const int MAXN = 5005;
int b, n;
int F[MAXN][MAXN], G[MAXN][MAXN];
int first(int a, int k);
int g(int a, int k);
int first(int a, int k) {
  int &ret = F[a][k];
  if (ret != -1) return ret;
  if (a == 0) return 0;
  if (a == b) return 0;
  if (k == 0) return 1;
  long long atas, bawah;
  if (a > b) {
    bawah = b + 1;
    atas = min(n, 2 * a - b - 1);
  } else if (a < b) {
    bawah = max(1, 2 * a - b + 1);
    atas = b - 1;
  }
  ret = ((g(atas, k - 1) - g(bawah - 1, k - 1)) % MOD + MOD) % MOD;
  ret = ((ret - first(a, k - 1)) % MOD + MOD) % MOD;
  return ret;
}
int g(int a, int k) {
  int &ret = G[a][k];
  if (ret != -1) return ret;
  if (a == 0) return 0;
  if (k == 0) return a;
  return ret = (first(a, k) + g(a - 1, k)) % MOD;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  memset(F, -1, sizeof F);
  memset(G, -1, sizeof G);
  long long a, k;
  cin >> n >> a >> b >> k;
  cout << first(a, k) << '\n';
}
