n = gets.to_i
dots = []

def div(a, b)
	if b[1] == a[1] then
		if b[0] == a[0] then
			0
		elsif b[0] > a[0] then
			Float::INFINITY
		else
			- Float::INFINITY
		end
	else
		(b[0] - a[0]) * 1.0 / (b[1] - a[1])
	end
end

def manh(a, b)
	(b[1] - a[1]).abs + (b[0] - a[0]).abs
end

min_x = Float::INFINITY
start_index = nil

n.times{ |i|
	x, y = gets.split.map &:to_i
	dots << [x,y,0]
	
	if min_x > x then
		min_x = x
		start_index= i
	end
}

start = dots[start_index]
stack = [start]
dots.delete_at(start_index)

dots.each{ |x| x[2] = div(start, x) }

dots.sort!{ |a,b| a[2] <=> b[2] }

dots.each{ |x|
	while stack.size >= 2 && div(stack[-1], x) > div(stack[-2], x)
		stack.pop
	end
	stack.push(x)
}

max = -1

start_index = 1

(0...stack.size).each{ |index|
	temp_max = -1
	start = stack[index]

	is_break = false

	(start_index ... stack.size).each{ |i|
		dis = manh(start, stack[i])
		if dis > temp_max then
			temp_max = dis
			start_index = i
		else
			is_break = true
			break
		end
	}

	if ! is_break then
		(0 ... start_index).each{ |i|
			dis = manh(start, stack[i])
			if dis > temp_max then
				temp_max = dis
				start_index = i
			else
				break
			end
		}
	end
	
	if max < temp_max then
		max = temp_max
	end
}

puts max