#include using namespace std; using ll = long long; constexpr ll inf = 1e10; int main() { int N; cin >> N; vector< ll > A(N), B(N); for (int i = 0; i < N; i++) { int x, y; cin >> x >> y; A[i] = x - y; B[i] = x + y; } auto as = A; auto bs = B; ranges::sort(as); ranges::sort(bs); ll ok = inf, ng = -1; auto check = [&](ll d) -> bool { for (auto x : {as[0], as[N - 1] - d}) { for (auto y : {bs[0], bs[N - 1] - d}) { auto lx = inf, ly = inf, rx = -inf, ry = -inf; for (int i = 0; i < N; i++) { if (x <= A[i] && A[i] <= x + d && y <= B[i] && B[i] <= y + d) { continue; } lx = min(lx, A[i]); rx = max(rx, A[i]); ly = min(ly, B[i]); ry = max(ry, B[i]); } if (rx - lx <= d && ry - ly <= d) { return true; } } } return false; }; while (ok - ng > 1) { auto mid = (ok + ng) / 2; if (check(mid)) ok = mid; else ng = mid; } cout << ok << endl; }