import Control.Monad
import Data.Maybe
import Data.List
import Text.Printf
import qualified Data.ByteString.Char8 as C

getInts :: IO [Int]
getInts = map (fst . fromJust . C.readInt) . C.words <$> C.getLine

main :: IO ()
main = do
  [n] <- getInts
  ps <- replicateM n getInts
  let as = sort $ map (\[x, y] -> x + y) ps
      bs = sort $ map (\[x, y] -> x - y) ps
      f xs = last xs - head xs
  printf "%d\n" $ maximum [f as, f bs]
