#include <bits/stdc++.h>
using namespace std;
template <class T, class U>
void ckmin(T &a, U b) {
  if (a > b) a = b;
}
template <class T, class U>
void ckmax(T &a, U b) {
  if (a < b) a = b;
}
int N, A, B, K;
long long dp[5013], pref[5013];
long long ans;
long long range(int l, int r) { return pref[r + 1] - pref[l]; }
int32_t main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> N >> A >> B >> K;
  A--;
  B--;
  dp[A] = 1;
  for (auto i = (0); i < (K); i++) {
    pref[0] = 0;
    for (auto j = (0); j < (N); j++) {
      pref[j + 1] = pref[j] + dp[j];
    }
    for (auto j = (0); j < (B); j++) {
      dp[j] = (range(0, (j + B - 1) >> 1) - dp[j]) % 1000000007;
    }
    for (auto j = (B + 1); j < (N); j++) {
      dp[j] = (range((j + B + 2) >> 1, N - 1) - dp[j]) % 1000000007;
    }
  }
  for (auto j = (0); j < (N); j++) {
    ans += dp[j];
    if (ans >= 1000000007) ans -= 1000000007;
  }
  cout << ans << '\n';
  return 0;
}
