#include <bits/stdc++.h>
using namespace std;
const long long INF = 1e12, MAX = 1e5 + 9;
long long n, l, r, maxv[MAX], minv[MAX];
pair<long long, long long> a[MAX];
bool check(long long m) {
  long long p = 1, q = n, x = INF, y = -INF, tx, ty;
  if (a[n - 1].first - a[1].first <= m) return true;
  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() {
  ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  cin >> n;
  long long x, y;
  for (int i = 1; i <= n; i++) cin >> x >> y, a[i] = {x + y, x - y};
  sort(a + 1, a + n + 1);
  maxv[0] = -INF, minv[0] = INF;
  for (int i = 1; i <= n; i++)
    maxv[i] = max(maxv[i - 1], a[i].second),
    minv[i] = min(minv[i - 1], a[i].second);
  l = -1, r = INF;
  while (l < r - 1) (check(l + r >> 1LL) ? r : l) = l + r >> 1LL;
  cout << fixed << setprecision(9) << r / 2.0;
}
