#include <bits/stdc++.h>
using namespace std;
int a, b, k, t;
int main() {
  cin >> a >> b >> k >> t;
  vector<vector<long long> > dp(2, vector<long long>(200002, 0));
  vector<vector<long long> > sums(2, vector<long long>(200002, 0));
  dp[0][100000] = 1;
  for (int i = 100000; i <= 200000; i++) sums[0][i] = 1;
  for (int i = 1, ii = 0; i <= t; i++, ii = 1 - ii) {
    for (int j = 0; j <= 200000; j++) {
      dp[i % 2][j] = sums[ii][min(j + k, 200000)];
      if (j - k > 0) {
        dp[i % 2][j] -= sums[ii][j - k - 1];
      }
      sums[i % 2][j] = dp[i % 2][j];
      if (j > 0) sums[i % 2][j] += sums[i % 2][j - 1];
      sums[i % 2][j] %= 1000000007;
      dp[i % 2][j] %= 1000000007;
    }
  }
  long long res = 0;
  for (int i = 0; i <= 200000; i++) {
    int pp = i + a - b - 1;
    if (pp < 0) continue;
    if (pp > 200000) pp = 200000;
    res += dp[t % 2][i] * sums[t % 2][pp];
    res %= 1000000007;
  }
  while (res < 0) res += 1000000007;
  cout << res;
}
