#include <cstdio>
#include <algorithm>
#include <map>
#define rep(i,n) for(int i = 0; i < n; i++)
#define fi first
#define sec second
using namespace std;
typedef pair<int,int> P;

int n;
int ch[2][100000];
P a[100000],b[100000];

int Abs(int x){
	return x < 0 ? -x : x;
}

bool A(int x){
	rep(i,2) rep(j,n) ch[i][j] = 2;
	rep(i,n){
		if(Abs(a[0].fi-a[i].fi)>x&&Abs(a[n-1].fi-a[i].fi)>x) return 0;
		if(Abs(a[0].fi-a[i].fi)>x) ch[0][a[i].sec] = 0;
		if(Abs(a[n-1].fi-a[i].fi)>x) ch[0][a[i].sec] = 1;
	}
	rep(i,n){
		if(Abs(b[0].fi-b[i].fi)>x&&Abs(b[n-1].fi-b[i].fi)>x) return 0;
		if(Abs(b[0].fi-b[i].fi)>x) ch[1][b[i].sec] = 0;
		if(Abs(b[n-1].fi-b[i].fi)>x) ch[1][b[i].sec] = 1;
	}
	int p = 0, q = 0;
	rep(i,n){
		if(ch[0][i]==2||ch[1][i]==2){
			q++;
			continue;
		}
		if(ch[0][i]!=ch[1][i]) p++;
	}
	if(p==0||p+q==n) return 1;
	return 0;
}

int main(){
	scanf("%d", &n);
	rep(i,n){
		int x, y; scanf("%d%d", &x, &y);
		a[i] = P(x+y,i);
		b[i] = P(x-y,i);
	}
	sort(a,a+n); sort(b,b+n);
	int s = 0, e = 500001, mid;
	while(true){
		mid = (s+e)/2;
		if(e-s == 1) break;
		if(A(mid)) e = mid;
		else s = mid;
	}
	printf("%d\n", e);
}