#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;

#define INF 115141919
int N;
int X[100010], Y[100010];
int X0, Y0, X1, Y1, X2, Y2, X3, Y3;

bool f(int A, int x, int y) {
  if (abs(X0-x)+abs(Y0-y) <= A && abs(X1-x)+abs(Y1-y) <= A) return true;
  if (abs(X2-x)+abs(Y2-y) <= A && abs(X3-x)+abs(Y3-y) <= A) return true;
  return false;
}
bool f(int A) {
  for (int _=0; _<=2; _++) {
    if (_ == 1) swap(X1, X2), swap(Y1, Y2);
    if (_ == 2) swap(X1, X2), swap(Y1, Y2), swap(X0, X2), swap(Y0, Y2);
    bool b = true;
    for (int i=0; i<N; i++) {
      if (!f(A, X[i], Y[i])) {
        b = false;
        break;
      }
    }
    if (b) return true;
  }
  return false;
}

int main() {
  cin >> N;
  for (int i=0; i<N; i++) cin >> X[i] >> Y[i];

  int a = -INF, b = -INF, c = -INF, d = -INF;
  for (int i=0; i<N; i++) {
    int x = X[i], y = Y[i];
    if ( (x+y) > a) a =  (x+y), X0 = x, Y0 = y;
    if ( (x-y) > b) b =  (x-y), X1 = x, Y1 = y;
    if (-(x+y) > c) c = -(x+y), X2 = x, Y2 = y;
    if (-(x-y) > d) d = -(x-y), X3 = x, Y3 = y;
  }

  int lo = 0, hi = INF;
  while (hi - lo > 1) {
    int mid = (lo + hi) / 2;
    if (f(mid)) hi = mid;
    else        lo = mid;
  }
  cout << hi << "\n";
  return 0;
}