#include <bits/stdc++.h>
using namespace std;
const int N = 100010;
const long long M = 2e9 + 10;
pair<long long, long long> p[N];
long long Lmx[N], Lmn[N], Rmx[N], Rmn[N];
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    long long x, y;
    scanf("%lld%lld", &x, &y);
    p[i].first = 2LL * (x + y), p[i].second = 2LL * (x - y);
  }
  sort(p + 1, p + n + 1);
  Lmx[0] = -M, Lmn[0] = M;
  for (int i = 1; i <= n; i++) {
    Lmx[i] = max(Lmx[i - 1], p[i].second);
    Lmn[i] = min(Lmn[i - 1], p[i].second);
  }
  Rmx[n + 1] = -M, Rmn[n + 1] = M;
  for (int i = n; i; i--) {
    Rmx[i] = max(Rmx[i + 1], p[i].second);
    Rmn[i] = min(Rmn[i + 1], p[i].second);
  }
  long long st = 0, en = M;
  for (int T = 0; T <= 40; T++) {
    long long md = st + en >> 1;
    int flg = 0;
    for (int L = 1; L <= n; L++) {
      int R = lower_bound(p + 1, p + n + 1,
                          make_pair(p[L].first + md * 2 + 1, 0LL)) -
              p;
      long long up = max(Lmx[L - 1], Rmx[R]);
      long long bt = min(Lmn[L - 1], Rmn[R]);
      if (up - bt <= 2 * md) {
        flg = 1;
        break;
      }
    }
    if (flg)
      en = md;
    else
      st = md;
  }
  printf("%.2lf\n", en / 2.0);
  return 0;
}
