#include <bits/stdc++.h>
using namespace std;
const long long N = (long long)(5e5) + 322;
const long long INF = (long long)(1e9);
const long long mod = (long long)(1e9) + 7;
const double eps = 1e-9;
long long a, b, t, k, pref[N], dp[N], mid, L = 10000, R = 470000, ans;
inline long long get(long long l, long long r) {
  return (pref[r] - pref[l - 1] + mod) % mod;
}
int main() {
  ios_base ::sync_with_stdio(false);
  cin.tie(0);
  cin >> a >> b >> k >> t;
  k *= 2;
  mid = 250000;
  dp[a - b + mid] = 1;
  for (long long i = 1; i <= N - 100; ++i)
    pref[i] = (dp[i] + pref[i - 1]) % mod;
  for (long long j = 1; j <= t; ++j) {
    for (long long i = L; i <= R; ++i)
      dp[i] = (dp[i - 1] - get(i - k - 1, i - 1) + mod + get(i, i + k)) % mod;
    for (long long i = 1; i <= N - 100; ++i)
      pref[i] = (pref[i - 1] + dp[i]) % mod;
  }
  for (long long i = mid + 1; i <= R; ++i) ans += dp[i], ans %= mod;
  cout << ans;
  return 0;
}
