#include <bits/stdc++.h>
using namespace std;
const long long int inf = 5e9;
const int mx = 1e5 + 10;
pair<long long int, long long int> p[mx];
long long int minl[mx], minr[mx];
long long int maxl[mx], maxr[mx];
const double eps = 1e-7;
int main() {
  int n;
  long long int x, y;
  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> x >> y;
    p[i].first = x - y;
    p[i].second = x + y;
  }
  sort(p, p + n);
  minl[0] = maxl[0] = p[0].second;
  for (int i = 1; i < n; i++) {
    minl[i] = min(minl[i - 1], p[i].second);
    maxl[i] = max(maxl[i - 1], p[i].second);
  }
  minr[n - 1] = maxr[n - 1] = p[n - 1].second;
  for (int i = n - 2; i >= 0; i--) {
    minr[i] = min(minr[i + 1], p[i].second);
    maxr[i] = max(maxr[i + 1], p[i].second);
  }
  double li = 0, ls = 2e9 + 10, d, d2, ans = -1;
  long long int miny, maxy;
  while (li + eps <= ls) {
    d = (li + ls) / 2.0;
    d2 = d * 2.0;
    int r = 0;
    bool can = false;
    for (int l = 0; l < n && !can; l++) {
      if (l > 0 && p[l].first == p[l - 1].first) continue;
      while (r < n && p[r].first - p[l].first <= d2) r++;
      miny = inf, maxy = -inf;
      if (l - 1 >= 0) miny = min(miny, minl[l - 1]);
      if (r < n) miny = min(miny, minr[r]);
      if (l - 1 >= 0) maxy = max(maxy, maxl[l - 1]);
      if (r < n) maxy = max(maxy, maxr[r]);
      if (maxy - miny <= d2) {
        can = true;
      }
    }
    if (can) {
      ls = d;
      ans = d;
    } else
      li = d;
  }
  printf("%.8lf\n", ans);
  return 0;
}
