#include<bits/stdc++.h>
using namespace std;
typedef long long           ll;
#define all(x) (x).begin(), (x).end()
#define make_unique(x) sort(all((x))); (x).resize(unique(all((x))) - (x).begin())
#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__)
template <typename Arg1>
void __f(const char* name, Arg1&& arg1) { cerr << name << " : " << arg1 << '\n'; }
template <typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args) {
  const char* comma = strchr(names + 1, ',');
  cerr.write(names, comma - names) << " = " << arg1 << " | "; __f(comma + 1, args...);
}

ll max(ll a, ll b) {return (a > b ? a : b);}
ll min(ll a, ll b) {return (a < b ? a : b);}
ll dx[4] = {1, 0, -1, 0};
ll dy[4] = {0, 1, 0, -1};
void yes_or_no(ll x) {
  if (x) cout << "YES\n"; else cout << "NO\n";
}
void solve_test() {
  ll ans = 0;
  ll a, b, c, d;
  cin >> a >> b >> c >> d;
  ans = a * d - b * c;
  cout << ans << "\n";
}
int main()
{
  cin.sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  solve_test();
  return 0;
}

#include <bits/stdc++.h>
using namespace std;
 
int main(){
    long double x, y, r;
    cin >> x >> y >> r;
    
  	r = nextafter(r, INFINITY);
    long long ans = 0;
    for (long long i = ceil(x - r); i <= floor(x + r); i++){
        long double p = sqrt(r * r - (x - i) * (x - i));
        ans += floor(y + p) - ceil(y - p) + 1;
    }
 
    cout << ans << endl;
    
    return 0;
}