#include <bits/stdc++.h>
using namespace std;
const int M = 100000 + 10;
struct POINT {
  int x;
  int y;
  bool operator<(const POINT &a) const {
    if (x < a.x) {
      return true;
    } else {
      if (x > a.x) {
        return false;
      } else {
        return y < a.y;
      }
    }
  }
} point[M];
long long int lu[M];
long long int ld[M];
long long int ru[M];
long long int rd[M];
int lpos[M];
int main() {
  int n;
  cin >> n;
  for (int i = 0; i < n; i++) {
    int x, y;
    cin >> x >> y;
    point[i + 1].x = x - y;
    point[i + 1].y = x + y;
  }
  sort(point + 1, point + n + 1);
  lu[0] = -1e10;
  ld[0] = 1e10;
  lpos[1] = 1;
  for (int i = 1; i <= n; i++) {
    long long int y = point[i].y;
    lu[i] = max(lu[i - 1], y);
    ld[i] = min(ld[i - 1], y);
    if (i >= 2) {
      if (point[i].x == point[i - 1].x) {
        lpos[i] = lpos[i - 1];
      } else {
        lpos[i] = i;
      }
    }
  }
  ru[n + 1] = -1e10;
  rd[n + 1] = 1e10;
  for (int i = n; i >= 1; i--) {
    long long int y = point[i].y;
    ru[i] = max(ru[i + 1], y);
    rd[i] = min(rd[i + 1], y);
  }
  long long int r = 1e10;
  long long int l = 0;
  long long int m = -1;
  while (l < r) {
    m = (l + r) / 2;
    int s = 1;
    int t = s;
    while (s <= n) {
      while (t <= n && point[t].x - point[s].x <= m) {
        t++;
      }
      int rs = lpos[s];
      bool ok = true;
      if (rs > 1 && t - 1 >= n) {
        long long int d = lu[rs - 1] - ld[rs - 1];
        if (d <= m) {
          ;
        } else {
          ok = false;
        }
      } else {
        if (rs <= 1 && t - 1 < n) {
          long long int d = ru[t] - rd[t];
          if (d <= m) {
            ;
          } else {
            ok = false;
          }
        } else {
          if (rs > 1 && t - 1 < n) {
            long long int d = max(lu[rs - 1], ru[t]) - min(ld[rs - 1], rd[t]);
            if (d <= m) {
              ;
            } else {
              ok = false;
            }
          }
        }
      }
      if (ok) {
        break;
      } else {
        s++;
      }
    }
    if (s <= n) {
      r = m;
    } else {
      l = m + 1;
    }
  }
  double ans = r / 2.0;
  printf("%.10f\n", ans);
  return 0;
}
