#include <bits/stdc++.h>
using namespace std;
struct timer {
  time_t start;
  timer() { start = clock(); }
  ~timer() {
    cerr << 1. * (clock() - start) / CLOCKS_PER_SEC << " secs" << endl;
  }
};
int n;
pair<int, int> p[100010];
int minL[100010], minR[100010], maxL[100010], maxR[100010];
int main() {
  cin.tie(0);
  ios_base::sync_with_stdio(0);
  cin >> n;
  for (int i = 0; i < (n); i++) {
    long long x, y;
    cin >> x >> y;
    p[i] = make_pair(x - y, x + y);
  }
  sort(p, p + n);
  minL[0] = 1070000000LL * 2;
  minR[n] = 1070000000LL * 2;
  maxL[0] = -1070000000LL * 2;
  maxR[n] = -1070000000LL * 2;
  for (int i = 0; i < (n); i++) {
    minL[i + 1] = min(minL[i], p[i].second);
    maxL[i + 1] = max(maxL[i], p[i].second);
  }
  for (int i = n - 1; i >= 0; i--) {
    minR[i] = min(minR[i + 1], p[i].second);
    maxR[i] = max(maxR[i + 1], p[i].second);
  }
  long long lo = -1, hi = 1070000000LL * 2;
  while (lo + 1 < hi) {
    long long mi = lo + hi >> 1;
    int to = 0, ok = 0;
    for (int i = 0; i < (n); i++) {
      while (to < n && p[to].first <= p[i].first + mi) {
        to++;
      }
      if (max(maxL[i], maxR[to]) <= min(minL[i], minR[to]) + mi) {
        ok = 1;
        break;
      }
    }
    if (ok)
      hi = mi;
    else
      lo = mi;
  }
  cout << setprecision(16) << hi / 2.;
}
