#include <bits/stdc++.h>
using namespace std;
const int inf = 1e9;
const long long Inf = 1e18;
const int N = 4e5 + 10;
const int M = 4e5;
const int mod = 0;
int gi() {
  int x = 0, o = 1;
  char ch = getchar();
  while ((ch < '0' || ch > '9') && ch != '-') ch = getchar();
  if (ch == '-') o = -1, ch = getchar();
  while (ch >= '0' && ch <= '9') x = x * 10 + ch - '0', ch = getchar();
  return x * o;
}
template <typename T>
bool chkmax(T &a, T b) {
  return a < b ? a = b, 1 : 0;
};
template <typename T>
bool chkmin(T &a, T b) {
  return a > b ? a = b, 1 : 0;
};
int add(int a, int b) { return a + b >= mod ? a + b - mod : a + b; }
int sub(int a, int b) { return a - b < 0 ? a - b + mod : a - b; }
void inc(int &a, int b) { a = (a + b >= mod ? a + b - mod : a + b); }
void dec(int &a, int b) { a = (a - b < 0 ? a - b + mod : a - b); }
int n, l[N], r[N], L[N], R[N];
vector<pair<int, int> > v[2];
long long ans = 0;
void solve(vector<pair<int, int> > &v, int t) {
  memset(l, 0x3f, sizeof(l));
  memset(r, 0xc0, sizeof(r));
  for (pair<int, int> a : v)
    chkmin(l[a.first], a.second), chkmax(r[a.first], a.second);
  memcpy(L, l, sizeof(l));
  memcpy(R, r, sizeof(r));
  for (int i = 1; i <= M; i++) chkmin(l[i], l[i - 1]), chkmax(r[i], r[i - 1]);
  for (int i = M - 1; ~i; i--) chkmin(L[i], L[i + 1]), chkmax(R[i], R[i + 1]);
  for (int i = t; i <= M; i += 2) {
    int x = max(l[i], L[i]), y = min(r[i], R[i]);
    if (x <= y) ans += (y - x) / 2;
  }
}
int main() {
  n = gi();
  for (int i = 1; i <= n; i++) {
    int x = gi() + 100000, y = gi() + 100000;
    v[(x + y) & 1].push_back(make_pair(x + y, x - y));
  }
  solve(v[0], 1), solve(v[1], 0);
  printf("%lld\n", ans);
  return 0;
}
