#include <bits/stdc++.h>
using namespace std;
struct sort_pred {
  bool operator()(const std::pair<int, int> &left,
                  const std::pair<int, int> &right) {
    return left.second < right.second;
  }
};
long long int gcd(long long int m, long long int n) {
  if (n == 0) return m;
  return gcd(n, m % n);
}
long long int powmod(long long int a, long long int b) {
  if (b == 0) return 1;
  long long int x = powmod(a, b / 2);
  long long int y = (x * x) % 1000000007;
  if (b % 2) return (a * y) % 1000000007;
  return y % 1000000007;
}
int main() {
  long long int a, b, c, l;
  scanf("%lld", &a);
  scanf("%lld", &b);
  scanf("%lld", &c);
  scanf("%lld", &l);
  long long int ans = 0;
  ans = (l + 1) * (l + 2) * (l + 3);
  ans /= 6;
  long long int k, cnt = 0, p;
  for (__typeof(l + 1) x = (0) - ((0) > (l + 1));
       x != (l + 1) - ((0) > (l + 1)); x += 1 - 2 * ((0) > (l + 1))) {
    k = min(a - b - c + x, l - x);
    if (k >= 0) {
      p = (k + 1) * (k + 2);
      p /= 2;
      cnt += p;
    }
  }
  for (__typeof(l + 1) y = (0) - ((0) > (l + 1));
       y != (l + 1) - ((0) > (l + 1)); y += 1 - 2 * ((0) > (l + 1))) {
    k = min(b - a - c + y, l - y);
    if (k >= 0) {
      p = (k + 1) * (k + 2);
      p /= 2;
      cnt += p;
    }
  }
  for (__typeof(l + 1) z = (0) - ((0) > (l + 1));
       z != (l + 1) - ((0) > (l + 1)); z += 1 - 2 * ((0) > (l + 1))) {
    k = min(c - b - a + z, l - z);
    if (k >= 0) {
      p = (k + 1) * (k + 2);
      p /= 2;
      cnt += p;
    }
  }
  ans -= cnt;
  printf("%lld\n", ans);
  return 0;
}
