const main = (input) => {
  var point =[]
  point = input.split("\n").map(function(element,index,array){
    return element.split(" ").map(n=>parseInt(n));
  });
  
  var N = point[0];

  // 総当たりはよくない
  //x、y単体の極端な奴だけを対象にする


  var X=[];
  var Y=[];
  for (var i=0; i<N;i++){
    X[i] = point[i+1][0];
    Y[i] = point[i+1][1];
  }


  // X,Yの最大最小を求める
  var [XMAX,Xmin,YMAX,Ymin]=[-Infinity,Infinity,-Infinity,Infinity];
  
  for (var i=0; i<N;i++){
    if (X[i]>XMAX) XMAX = X[i];
    if (X[i]<Xmin) Xmin = X[i];
    if (Y[i]>YMAX) YMAX = Y[i];
    if (Y[i]<Ymin) Ymin = Y[i];
  };

  // 最大、最小の点をmemoする
  var memo=[];
  for (var i=1; i<=N;i++){
    if (point[i][0]==XMAX || point[i][0]==Xmin || point[i][1]==YMAX || point[i][1]==Ymin) {
        memo.push(i);
      }
    }
  
  // memo上の点の距離を総当たりで比べる
  var length = memo.length;
  let dist = [];
  for (var i=0; i<length; i++){
    for (var j=i+1; j<length;j++){
      dist.push(Math.abs(point[memo[i]][0]-point[memo[j]][0])+Math.abs(point[memo[i]][1]-point[memo[j]][1]));
    }
  }
  dist.sort((a,b)=>b-a);


  console.log(dist[0]);
  };
  
main(require('fs').readFileSync('/dev/stdin', 'utf8'));
