#include <bits/stdc++.h>
using namespace std;
long long mod = 1000000007;
long long gcd(long long a, long long b) {
  if (a == 0)
    return b;
  else
    return gcd(b % a, a);
}
long long lcm(long long a, long long b) { return (a * b) / gcd(a, b); }
long long popcount(long long val) {
  long long ans = 0;
  while (val != 0) {
    if (val % 2 == 1) {
      ans++;
    }
    val /= 2;
  }
  return ans;
}
long long binaryLength(long long val) {
  long long k = 0;
  if (val == 0) return 1;
  while (val) {
    k++;
    val /= 2;
  }
  return k;
}
int findMaxPossible(int k) {
  int val = 1;
  while (k--) {
    val *= 2;
    if (val > 1000000000) return INT_MAX;
  }
  return val;
}
int main() {
  int t = 1;
  while (t--) {
    long long a, b, c, d;
    cin >> a >> b >> c >> d;
    long long ans[500005];
    for (int i = 0; i < 500005; i++) {
      ans[i] = 0;
    }
    for (int y = b; y <= c; y++) {
      ans[c - y]++;
      ans[d - y + 1]--;
    }
    for (int i = 1; i < 500005; i++) {
      ans[i] += ans[i - 1];
    }
    for (int i = 1; i < 500005; i++) {
      ans[i] += ans[i - 1];
    }
    long long ans1 = 0;
    long long currVal;
    for (int i = a - 1; i <= b - 1; i++) {
      ans1 += ans[i];
    }
    cout << ans1 << endl;
  }
  return 0;
}
