#include <bits/stdc++.h>
using namespace std;
long long int d[300007][3];
int main() {
  long long int i, j, n, k, a, b, t, ans = 0, p = 1e9 + 7;
  cin >> a >> b >> k >> t;
  d[k * t][0] = 1;
  for (i = 0; i < t; i++) {
    long long int x = 0;
    for (j = 0; j <= k; j++) x = (x + d[j][0]) % p;
    for (j = 0; j <= 2 * k * t; j++) {
      d[j][1] = x;
      x = (x + d[j + k + 1][0]) % p;
      if (j - k >= 0) x = (x - d[j - k][0]) % p;
    }
    for (j = 0; j <= 2 * k * t; j++) d[j][0] = d[j][1];
  }
  long long int dif = abs(a - b);
  for (i = 1; i <= k * t * 2; i++) d[i][0] = (d[i][0] + d[i - 1][0]) % p;
  if (a <= b)
    for (i = dif + 1; i <= 2 * k * t; i++) {
      if (i - dif - 2 >= 0)
        ans = (ans + ((d[2 * k * t][0] - d[i - 1][0]) *
                      (d[i - dif - 1][0] - d[i - dif - 2][0])) %
                         p) %
              p;
      else
        ans = (ans +
               ((d[2 * k * t][0] - d[i - 1][0]) * (d[i - dif - 1][0])) % p) %
              p;
      if (ans < 0) ans += p;
    }
  else {
    for (i = 0; i <= 2 * k * t; i++) {
      if (i == 0)
        ans = (ans + ((d[i][0]) * (d[2 * k * t][0])) % p) % p;
      else
        ans =
            (ans +
             ((d[i][0] - d[i - 1][0]) * (d[2 * k * t][0] - d[i - 1][0])) % p) %
            p;
      if (ans < 0) ans += p;
    }
    dif = a - b - 1;
    for (i = 0; i <= 2 * k * t; i++) {
      if (i > 0)
        ans = (ans + ((d[i][0] - d[i - 1][0]) *
                      (d[min(2 * k * t, i + dif)][0] - d[i][0])) %
                         p) %
              p;
      else
        ans = (ans +
               ((d[i][0]) * (d[min(2 * k * t, i + dif)][0] - d[i][0])) % p) %
              p;
      if (ans < 0) ans += p;
    }
  }
  if (ans < 0) ans += p;
  cout << ans << endl;
}
