import java.lang.Long.max
import java.lang.Long.min
public fun readln() = readLine()!!
public fun readlnByte() = readln().toByte()
public fun readlnShort() = readln().toShort()
public fun readlnInt() = readln().toInt()
public fun readlnLong() = readln().toLong()
public fun readlnFloat() = readln().toFloat()
public fun readlnDouble() = readln().toDouble()
public fun readlnBigInt(radix: Int = 10) = readln().toBigInteger(radix)
public fun readlnBigDecimal() = readln().toBigDecimal()

public fun lineSequence(limit: Int = Int.MAX_VALUE) = generateSequence { readLine() }.constrainOnce().take(limit)
public fun readlnStrings() = readln().split(' ')
public fun readlnBytes() = readlnStrings().map { it.toByte() }
public fun readlnShorts() = readlnStrings().map { it.toShort() }
public fun readlnInts() = readlnStrings().map { it.toInt() }
public fun readlnLongs() = readlnStrings().map { it.toLong() }
fun main() {
    var zMin = 2e9.toLong()
    var zMax = (-2e9).toLong()
    var wMin = 2e9.toLong()
    var wMax = (-2e9).toLong()
    val n = readlnInt()
    for (i in 0 until n) {
        val (x, y) = readlnLongs()
        zMin = min(zMin, x+y)
        zMax = max(zMax, x+y)
        wMin = min(wMin, x-y)
        wMax = max(wMax, x-y)
    }
    println("%d".format(max(zMax-zMin, wMax-wMin)))
}