#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:66777216")
using namespace std;
int a, b, c, d, n, m, k;
pair<long long, long long> mas[100002];
pair<long long, long long> pr[100002], suf[100002];
inline void upd(pair<long long, long long> &a, pair<long long, long long> b) {
  if (a.first > b.first) a.first = b.first;
  if (a.second < b.second) a.second = b.second;
}
inline bool check(long long d) {
  if (d < 0) return 0;
  int a = 0;
  for (int _n((n)-1), i(0); i <= _n; i++) {
    while (a < n && mas[a].first - mas[i].first <= d) ++a;
    pair<long long, long long> t(4LL * 1000000000, -4LL * 1000000000);
    if (i) upd(t, pr[i - 1]);
    if (a != n) upd(t, suf[a]);
    if (t.first > t.second) return 1;
    if (t.second - t.first <= d) return 1;
  }
  return 0;
}
int main() {
  scanf("%d", &n);
  for (int _n((n)-1), i(0); i <= _n; i++) {
    scanf("%d%d", &a, &b);
    mas[i].first = a - b;
    mas[i].second = a + b;
  }
  sort(mas, mas + n);
  for (int _n((n)-1), i(0); i <= _n; i++) {
    pr[i] = make_pair(mas[i].second, mas[i].second);
    if (!i) continue;
    upd(pr[i], pr[i - 1]);
  }
  for (int i = (n - 1), _b = (0); i >= _b; i--) {
    suf[i] = make_pair(mas[i].second, mas[i].second);
    if (i == n - 1) continue;
    upd(suf[i], suf[i + 1]);
  }
  long long l = -1, r = 4LL * 1000000000 + 1;
  while (r - l > 1) {
    long long xx = (r + l) / 2;
    if (check(xx))
      r = xx;
    else
      l = xx;
  }
  cout << r / 2 << "." << (r % 2 ? "5" : "0") << endl;
}
