#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
using namespace std;
const long long inf = 1e18;
const long long mod = 1000000007;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
long long powm(long long a, long long b, long long m);
vector<pair<long long, long long> > pts;
long long mays[100002], miys[100002];
long long mayu[100002], miyu[100002];
void solve() {
  long long n, x, y;
  cin >> n;
  pts.push_back({-inf, -inf});
  for (long long i = 0; i < n; i++)
    cin >> x >> y, pts.push_back({x + y, y - x});
  sort(pts.begin(), pts.end());
  miys[0] = inf;
  mays[0] = -inf;
  mayu[n + 1] = -inf;
  miyu[n + 1] = inf;
  for (long long i = 1; i <= n; i++) {
    mays[i] = max(mays[i - 1], pts[i].second);
    miys[i] = min(miys[i - 1], pts[i].second);
  }
  for (long long i = n; i > 0; i--) {
    mayu[i] = max(mayu[i + 1], pts[i].second);
    miyu[i] = min(miyu[i + 1], pts[i].second);
  }
  long double lo = 0, hi = 6e9, mid = (lo + hi) / 2;
  for (long long ii = 0; ii < 100; ii++) {
    bool sat = 0;
    for (long long i = 1, j = 1; i <= n; i++) {
      while (j != n && pts[j + 1].first - pts[i].first <= 2 * mid) j++;
      if (i == 1 && j == n)
        sat = 1;
      else if (i == 1) {
        if (mayu[j + 1] - miyu[j + 1] <= 2 * mid) sat = 1;
      } else if (j == n) {
        if (mays[i - 1] - miys[i - 1] <= 2 * mid) sat = 1;
      } else if (max(mays[i - 1], mayu[j + 1]) -
                     min(miys[i - 1], miyu[j + 1]) <=
                 2 * mid) {
        sat = 1;
        break;
      }
    }
    if (sat)
      hi = mid;
    else
      lo = mid;
    mid = (lo + hi) / 2;
  }
  cout << mid << '\n';
}
signed main() {
  ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  srand(chrono::steady_clock::now().time_since_epoch().count());
  cout << fixed << setprecision(12);
  long long t = 1;
  auto clk = clock();
  while (t--) solve();
  return 0;
}
long long powm(long long a, long long b, long long m) {
  long long te = 1;
  while (b) {
    if (b & 1) te = (te * a) % m;
    a = (a * a) % m;
    b >>= 1;
  }
  return te;
}
