#include <bits/stdc++.h>
using namespace std;
const int MAX = 2000005;
const int mod = 1000000007;
long long fac[MAX], finv[MAX], inv[MAX];
void COMinit() {
  fac[0] = fac[1] = 1;
  finv[0] = finv[1] = 1;
  inv[1] = 1;
  for (int i = 2; i < MAX; i++) {
    fac[i] = fac[i - 1] * i % mod;
    inv[i] = mod - inv[mod % i] * (mod / i) % mod;
    finv[i] = finv[i - 1] * inv[i] % mod;
  }
}
long long COM(int n, int k) {
  if (n < k) return 0;
  if (n < 0 || k < 0) return 0;
  return fac[n] * (finv[k] * finv[n - k] % mod) % mod;
}
int main() {
  COMinit();
  int i;
  int r1;
  int r2;
  int c1;
  int c2;
  long long int ans = 0;
  cin >> r1 >> c1 >> r2 >> c2;
  for (i = r1; i <= r2; i++) {
    ans += COM(i + c2 + 1, i) - COM(i + c1, i);
    ans %= mod;
  }
  cout << ans << endl;
}
