#include <bits/stdc++.h>
using namespace std;
const long long M = 1ll << 35;
const long N = 110000;
long long i, n, x, y, l, r, mid, maxv[N], minv[N];
pair<long long, long long> a[N];
bool check(long long m) {
  if (a[n].first - a[1].first <= m) return true;
  long long p = 1, q = n, x = M, y = -M, tx, ty;
  while (a[p].first + m < a[q].first) p++;
  while (p > 0) {
    tx = min(minv[p - 1], x);
    ty = max(maxv[p - 1], y);
    if (tx + m >= ty) return true;
    for (p--; a[p].first + m < a[q].first; q--) {
      x = min(x, a[q].second);
      y = max(y, a[q].second);
    }
  }
  return false;
}
int main() {
  scanf("%I64d", &n);
  for (i = 1; i <= n; i++) {
    scanf("%I64d%I64d", &x, &y);
    a[i] = make_pair(x + y, x - y);
  }
  sort(a + 1, a + n + 1);
  maxv[0] = -M;
  minv[0] = M;
  for (i = 1; i <= n; i++) {
    maxv[i] = max(maxv[i - 1], a[i].second);
    minv[i] = min(minv[i - 1], a[i].second);
  }
  l = 0;
  r = M;
  while (l < r) {
    mid = (l + r) / 2;
    if (check(mid))
      r = mid;
    else
      l = mid + 1;
  }
  printf("%.15lf\n", (double)l / 2);
  return 0;
}
