#include <bits/stdc++.h>
using namespace std;
template <typename A, typename B>
inline void chmin(A &a, B b) {
  if (a > b) a = b;
}
template <typename A, typename B>
inline void chmax(A &a, B b) {
  if (a < b) a = b;
}
const long long mod = 1000000007;
long long dp[2][666666];
inline void add(long long &a, long long b) {
  a += b;
  if (a >= b) a -= mod;
  if (a < 0) a += mod;
}
signed main() {
  long long A, B, K, T;
  cin >> A >> B >> K >> T;
  dp[0][A - B + 300000] = 1;
  for (long long i = 0; i < 2 * T; i++) {
    long long sum = 0;
    for (long long j = 0; j < 2 * K + 1; j++) add(sum, dp[i & 1][j]);
    for (long long j = K; j + K + 1 < 666666; j++) {
      dp[(i + 1) & 1][j] = sum;
      add(sum, dp[i & 1][j - K]);
      add(sum, -dp[i & 1][j + K + 1]);
    }
  }
  long long ans = 0;
  for (long long i = 300000 + 1; i < 666666; i++) add(ans, dp[0][i]);
  cout << ans << endl;
  return 0;
}
