#include <bits/stdc++.h>   using namespace std;   const long long inf = 2000000002;   pair<long long, long long> p[100005];   long long minl[100005], maxl[100005], minr[100005], maxr[100005];   int main() {     int i, j, n, a, b;     while (~scanf( %d , &n)) {       for (i = 0; i < n; i++) {         scanf( %d%d , &a, &b);         p[i] = make_pair(a - b, a + b);       }       sort(p, p + n);       minl[0] = maxl[0] = p[0].second;       for (i = 1; i < n; i++)         minl[i] = min(minl[i - 1], p[i].second),         maxl[i] = max(maxl[i - 1], p[i].second);       minr[n - 1] = maxr[n - 1] = p[n - 1].second;       for (i = n - 2; i >= 0; i--)         minr[i] = min(minr[i + 1], p[i].second),         maxr[i] = max(maxr[i + 1], p[i].second);       long long l = 0, r = 4 * inf;       while (l < r) {         long long s = (l + r) / 2;         bool can = 0;         j = 0;         for (i = 0; i < n; i++) {           while (j < n - 1 && p[j + 1].first - p[i].first <= s) j++;           if (i == 0 && j == n - 1) {             can = true;             break;           }           long long miny = inf, maxy = -inf;           if (i > 0) miny = min(minl[i - 1], miny), maxy = max(maxl[i - 1], maxy);           if (j < n - 1)             miny = min(miny, minr[j + 1]), maxy = max(maxr[j + 1], maxy);           if (maxy - miny <= s) can = true;           if (can) break;         }         if (can)           r = s;         else           l = s + 1;       }       double t = l * 0.5;       printf( %.8lf n , t);     }     return 0;   }   