#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:256000000")
using namespace std;
const long double PI = 3.14159265358979323846;
const long double eps = 1e-5;
const int INF = numeric_limits<int>::max();
const int negINF = numeric_limits<int>::min();
const long long LINF = numeric_limits<long long>::max();
const long long mod = 1000 * 1000 * 1000 + 7;
long long get(vector<pair<long long, long long> > p) {
  if (p.empty()) return 0;
  sort(p.begin(), p.end());
  int n = p.size();
  long long res = 0;
  vector<long long> prMax(n, negINF), prMin(n, INF), sufMax(n, negINF),
      sufMin(n, INF);
  prMax[0] = p[0].second;
  prMin[0] = p[0].second;
  sufMax[n - 1] = p[n - 1].second;
  sufMin[n - 1] = p[n - 1].second;
  for (int i = 1; i < n; ++i) {
    prMax[i] = max(prMax[i - 1], p[i].second);
    prMin[i] = min(prMin[i - 1], p[i].second);
  }
  for (int i = n - 2; i >= 0; --i) {
    sufMax[i] = max(sufMax[i + 1], p[i].second);
    sufMin[i] = min(sufMin[i + 1], p[i].second);
  }
  for (int i = 1; i < n; ++i) {
    res += ((p[i].first - p[i - 1].first) *
            max((long long)(0),
                min(prMax[i - 1], sufMax[i]) - max(prMin[i - 1], sufMin[i]))) /
           4;
  }
  return res;
}
void solve() {
  int n;
  cin >> n;
  vector<pair<long long, long long> > p1, p2;
  for (int i = 0; i < n; ++i) {
    int x, y;
    cin >> x >> y;
    int s = x + y, d = x - y;
    if (abs(s) & 1)
      p2.emplace_back(s, d);
    else
      p1.emplace_back(s, d);
  }
  cout << get(p1) + get(p2) << endl;
}
int main() {
  ios_base::sync_with_stdio(0);
  solve();
  return 0;
}
