import qualified Data.ByteString.Char8 as BS
import Data.Char
import Data.List
import Control.Monad

main = do
  li <- BS.getLine
  let Just (n,_) = BS.readInt li
  abs <- forM [1..n] (\_ -> do
    li <- BS.getLine
    let [a,b] = unfoldr (BS.readInt . BS.dropWhile isSpace) li
    return (a,b)
    )
  print $ compute n abs

compute :: Int -> [(Int,Int)] -> Int
compute n abs = max (maximum ps - minimum ps) (maximum qs - minimum qs)
  where
    (ps,qs) = unzip [ (a+b,b-a) | (a,b) <- abs ]

{-
それぞれの点をy=xに投影した位置と、y=-xに投影した位置を計算して、それぞれについて、
maximum-minimumを求める。その大きい方が答え。
-}