#include <bits/stdc++.h>
using namespace std;
const int N = 105, M = N * 1000 * 2, P = 1000000007;
int dp1[2][M], dp2[2][M], sum1[M], sum2[M];
int main() {
  int a = 0, b = 0, k = 0, t = 0;
  scanf("%d%d%d%d", &a, &b, &k, &t);
  a += 1e5;
  b += 1e5;
  dp1[0][a] = dp2[0][b] = 1;
  sum1[a] = sum2[b] = 1;
  for (int i = 1; i <= t; ++i) {
    int now = i % 2;
    memset(dp1[now], 0, sizeof(dp1[now]));
    memset(dp2[now], 0, sizeof(dp2[now]));
    for (int j = -k * i; j <= k * i; ++j) {
      int l = max(-k * (i - 1), j - k), r = min(k * (i - 1), j + k);
      dp1[now][a + j] += (sum1[r + a] - sum1[l + a - 1]) % P;
      dp1[now][a + j] %= P;
      dp2[now][b + j] += (sum2[r + b] - sum2[l + b - 1]) % P;
      dp2[now][b + j] %= P;
    }
    for (int j = 1; j < M; ++j) {
      sum1[j] = sum1[j - 1] + dp1[now][j];
      sum1[j] %= P;
      sum2[j] = sum2[j - 1] + dp2[now][j];
      sum2[j] %= P;
    }
  }
  int ans = 0;
  for (int i = 1; i < M; ++i)
    ans += (long long)sum2[i - 1] * dp1[t % 2][i] % P, ans %= P;
  ans = (ans % P + P) % P;
  printf("%d\n", ans);
  return 0;
}
