-157778763 218978790 976692563 591093088
 -1 -4 1 4
 -999999999 -1000000000 -1 0
 1000000000 1000000000 1000000000 1000000000
 -2 -3 -2 1
 -1000000000 -999999999 1000000000 999999999
 0 -1 0 1
 -999999999 -999999999 999999999 999999999
 -946749893 -687257665 -539044455 -443568671
 -26644507 -867720841 975594569 264730225
 309857887 -687373066 663986893 403321752
 -2 -2 -2 0
 0 -2 0 2
 0 -1 2 1
 -2 -2 2 2
 -999999999 -1000000000 999999999 1000000000
 -330513944 -970064382 500608496 369852884
 0 -3 0 3
 0 0 2 2
 -946749893 -687257666 -539044455 -443568670
 -330513944 -970064383 500608496 369852885
 -1000000000 -1000000000 1000000000 1000000000
 0 -1 2 3
 -999999999 -999999999 -1 -1
 309857887 -687373065 663986893 403321751
 -482406510 -512306895 412844236 -168036049
 0 0 2 0
 0 0 0 0
 -471257905 -685885154 782342299 909511044
 -482406510 -512306894 412844236 -168036050
 -157778763 218978791 976692563 591093087
 -411495869 33834653 -234317741 925065545
 -2 -3 2 3
 -411495869 33834652 -234317741 925065546
 -26644507 -867720842 975594569 264730226
 -537640548 -254017710 62355638 588691834
 -471257905 -685885153 782342299 909511043
 -1 -3 1 3
 1000000000 999999999 1000000000 999999999
 1 0 5 6
 -537640548 -254017711 62355638 588691835

211076501291102387 14 500000000000000000 1 3 2000000000000000000 2 1999999998000000001 49676664342971903 567493356068872580 193123336596257367 2 3 5 13 2000000000000000000 556817654843544374 4 5 49676664750677342 556817655674666815 2000000002000000001 8 499999999000000001 193123336242128360 154104366473536355 2 1 999994501061310398 154104365578285608 211076500156631060 78953311064369599 18 78953311241547728 567493357071111657 252811256874252458 999994499807710193 11 1 18 252811257474248645
#include <bits/stdc++.h>
using namespace std;
void a() {
  int n;
  cin >> n;
  cout << "25";
}
void b() {
  int n, t;
  cin >> n >> t;
  double pow[40];
  pow[0] = 1.000000011;
  for (int i = 1; i < 40; i++) pow[i] = pow[i - 1] * pow[i - 1];
  double res = (double)n;
  for (int i = 0; i < 40; i++) {
    if (t % 2 == 1) res *= pow[i];
    t /= 2;
  }
  cout.precision(12);
  cout << fixed << res;
}
void c() {
  int n;
  cin >> n;
  long long res = 1;
  for (int i = 0; i < n + 1; i++) res *= 2;
  res -= 2;
  cout << res;
}
void d() {
  long long n;
  cin >> n;
  long long res = 1ll + 3ll * n * (n + 1);
  cout << res;
}
void e() {
  long long x1, y1, x2, y2;
  cin >> x1 >> y1 >> x2 >> y2;
  long long col1 = (y2 - y1 + 1) / 2;
  if ((x1 % 2 + 2) % 2 == (y1 % 2 + 2) % 2 &&
      (y1 % 2 + 2) % 2 == (y2 % 2 + 2) % 2)
    col1++;
  cout << col1 << endl;
  long long col2 = (y2 - y1 + 1) / 2;
  if (((x1 + 1) % 2 + 2) % 2 == (y1 % 2 + 2) % 2 &&
      (y1 % 2 + 2) % 2 == (y2 % 2 + 2) % 2)
    col2++;
  cout << col2 << endl;
  long long res = (col1 + col2) * ((x2 - x1 + 1) / 2);
  if ((x2 - x1 + 1) % 2 == 1) res += col1;
  cout << res;
}
void f() {
  int n;
  cin >> n;
  long long over = 1;
  long long res = 0;
  for (int i = 1; i <= 7; i++) {
    over *= (long long)(n - i + 1);
    over /= (long long)i;
    if (i >= 5) res += over;
  }
  cout << res;
}
void g() {
  int n;
  cin >> n;
  long long over[6];
  over[1] = (long long)n;
  for (int i = 2; i <= 5; i++) {
    over[i] = (over[i - 1] * (n - i + 1)) / i;
  }
  long long f1 = over[3] + 2 * over[2] + over[1];
  long long f2 = over[5] + 4 * over[4] + 6 * over[3] + 4 * over[2] + over[1];
  long long res = f1 * f2;
  cout << res;
}
void h() {
  int n;
  cin >> n;
  long long res = 1ll;
  for (int i = 0; i < 5; i++) {
    res *= (long long)n - i;
    res /= (long long)i + 1;
  }
  for (int i = 0; i < 5; i++) res *= (long long)n - i;
  cout << res;
}
void i() {
  int n;
  cin >> n;
  long long res = 24 + 9 * (n - 3);
  for (int i = 0; i < n - 3; i++) res *= 4ll;
  cout << res;
}
void j() {
  long long n;
  cin >> n;
  long long div = 2520;
  ;
  long long res = n / div;
  cout << res;
}
void k() {
  long long n;
  cin >> n;
  long long base = 0;
  for (int i = 1; i <= 2520; i++) {
    bool div = false;
    for (int j = 2; j <= 10; j++) {
      if (i % j == 0) div = true;
    }
    if (!div) base++;
  }
  long long res = (n / 2520ll) * base;
  for (long long i = (n / 2520ll) * 2520ll + 1ll; i <= n; i++) {
    bool div = false;
    for (int j = 2; j <= 10; j++) {
      if (i % j == 0) div = true;
    }
    if (!div) res++;
  }
  cout << res;
}
void l() {
  string a, s;
  cin >> a;
  s += a[0];
  s += a[2];
  s += a[4];
  s += a[3];
  s += a[1];
  long long num = (s[0] - '0') * 10000 + (s[1] - '0') * 1000 +
                  (s[2] - '0') * 100 + (s[3] - '0') * 10 + (s[4] - '0');
  long long pot = 1ll;
  for (int i = 0; i < 5; i++) {
    pot = (pot * num) % 100000;
  }
  int res[5];
  for (int i = 0; i < 5; i++) {
    res[5 - i - 1] = pot % 10;
    pot /= 10;
  }
  for (int i = 0; i < 5; i++) {
    cout << res[i];
  }
}
void m() {
  long long x;
  cin >> x;
  x = -x;
  x = (x % 360ll + 360ll) % 360ll;
  int res = 0;
  while (x > 45ll && x < 315ll) {
    res++;
    x += 90ll;
  }
  cout << res;
}
void n() {
  int a, b, c;
  cin >> a >> b >> c;
  double res = ((double)(-b)) / ((double)(2 * a)) +
               sqrt((double)(b * b - 4 * a * c)) / ((double)2 * abs(a));
  cout.precision(12);
  cout << fixed << res << endl;
  res = ((double)(-b)) / ((double)(2 * a)) -
        sqrt((double)(b * b - 4 * a * c)) / ((double)2 * abs(a));
  cout << fixed << res << endl;
}
void o() {
  cout.precision(12);
  int px, py, vx, vy;
  cin >> px >> py >> vx >> vy;
  int a, b, c, d;
  cin >> a >> b >> c >> d;
  double dx, dy;
  dx = ((double)vx) / sqrt((double)(vx * vx + vy * vy));
  dy = ((double)vy) / sqrt((double)(vx * vx + vy * vy));
  double x, y;
  x = px + dx * b;
  y = py + dy * b;
  cout << fixed << x << " " << y << endl;
  double save = dx;
  dx = -dy;
  dy = save;
  x = px + dx * a / 2.0;
  y = py + dy * a / 2.0;
  cout << fixed << x << " " << y << endl;
  x = px + dx * c / 2.0;
  y = py + dy * c / 2.0;
  cout << fixed << x << " " << y << endl;
  save = dx;
  dx = -dy;
  dy = save;
  x += dx * d;
  y += dy * d;
  cout << fixed << x << " " << y << endl;
  save = dx;
  dx = -dy;
  dy = save;
  x += dx * c;
  y += dy * c;
  cout << fixed << x << " " << y << endl;
  x = px + dx * c / 2.0;
  y = py + dy * c / 2.0;
  cout << fixed << x << " " << y << endl;
  x = px + dx * a / 2.0;
  y = py + dy * a / 2.0;
  cout << fixed << x << " " << y << endl;
}
void q() {
  int l3, l4, l5;
  cin >> l3 >> l4 >> l5;
  double v3 = (sqrt(2.0) * l3 * l3 * l3) / 12.0;
  double v4 = (sqrt(2.0) * l4 * l4 * l4) / 6.0;
  double r = (sqrt(25.0 + 10.0 * sqrt(5.0)) * l5) / 10.0;
  double h = sqrt(3.0 * l5 * l5 / 4.0 - r * r);
  double v5 = ((sqrt(25.0 + 10.0 * sqrt(5.0)) * l5 * l5) / 4.0) * h / 3.0;
  double res = v3 + v4 + v5;
  cout.precision(12);
  cout << fixed << res;
}
void r() {
  long long n;
  cin >> n;
  if (n % 2 == 0)
    cout << "2";
  else
    cout << "1";
}
int main() { e(); }
