#include <bits/stdc++.h>
using namespace std;
inline long long read() {
  char ch = getchar();
  long long nega = 1;
  while (!isdigit(ch)) {
    if (ch == '-') nega = -1;
    ch = getchar();
  }
  long long ans = 0;
  while (isdigit(ch)) {
    ans = ans * 10 + ch - 48;
    ch = getchar();
  }
  if (nega == -1) return -ans;
  return ans;
}
inline long long min(long long x, long long y, long long z) {
  return min(x, min(y, z));
}
inline long long max(long long x, long long y, long long z) {
  return max(x, max(y, z));
}
inline long long add(long long x, long long y) {
  return x + y >= 998244353 ? x + y - 998244353 : x + y;
}
inline long long add(long long x, long long y, long long z) {
  return add(add(x, y), z);
}
inline long long sub(long long x, long long y) {
  return x - y < 0 ? x - y + 998244353 : x - y;
}
inline long long mul(long long x, long long y) {
  return 1LL * x * y % 998244353;
}
inline long long mul(long long x, long long y, long long z) {
  return mul(mul(x, y), z);
}
signed main() {
  long long a, b, c, d;
  cin >> a >> b >> c >> d;
  long long ans = 0;
  for (long long i = c; i <= d; i++) {
    long long m = i - b + 1;
    if (m >= a && c - b + 1 > 0) {
      long long l = max(a, i - c);
      long long d = c - i + l, e = c - i + min(b, m);
      if (e >= d) ans += (e + d) * (e - d + 1) / 2;
    }
    long long L = b - max(m, a - 1);
    if (c - b + 1 >= 0 && b > m) ans += L * (c - b + 1);
  }
  cout << ans << endl;
  return 0;
}
