#include <iostream>
#include <algorithm>
#include <utility>
#include <vector>
#include <list>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <string>
#include <sstream>
#include <cstring>
#include <cstdlib>

using namespace std;

#define ALL(c) c.begin(),c.end()
#define RALL(c) c.rbegin(),c.rend()
#define SORT(x) sort((x).begin(),(x).end())
#define REP(i,x,y) for(int i=(x);i<(y);++i)
#define MP(a,b) make_pair((a),(b))
#define debug(x) #x << "=" << (x)
 
#ifdef DEBUG
#define _GLIBCXX_DEBUG
#define dump(x) std::cerr << debug(x) << " (L:" << __LINE__ << ")" << std::endl
#else
#define dump(x)
#endif

typedef long long int ll;
typedef pair<int,int> pii;
//template<typename T> using vec=std::vector<T>;

const int INF=1<<30;
const long long int INF_=1LL<<58;
const double EPS=1e-9;
const int dx[]={1,0,-1,0},dy[]={0,1,0,-1};

template <typename T> ostream &operator<<(ostream &os, const vector<T> &vec){
	os << "[";
	for (const auto &v : vec) {
		os << v << ",";
	}
	os << "]";
	return os;
}

int N;
pii w[100000],s[100000];

bool Check(int d){
	int a[100000],b[100000];
	fill_n((int*)a,100000,0);
	fill_n((int*)b,100000,0);
	
	int mi=w[0].first,mx=w[N-1].first;
	REP(i,0,N){
		if(abs(mi-w[i].first)>d&&abs(mx-w[i].first)>d) return false;
		if(abs(mi-w[i].first)>d) a[w[i].second]=2;
		if(abs(mx-w[i].first)>d) a[w[i].second]=1;
	}
	mi=s[0].first;
	mx=s[N-1].first;
	REP(i,0,N){
		if(abs(mi-s[i].first)>d&&abs(mx-s[i].first)>d) return false;
		if(abs(mi-s[i].first)>d) b[s[i].second]=2;
		if(abs(mx-s[i].first)>d) b[s[i].second]=1;
	}
	
	int both=0,either=0;
	REP(i,0,N){
		if(a[i]==0||b[i]==0) ++both;
		else if(a[i]!=b[i]) ++either;
	}
	
	return either==0||both+either==N;
}

void Solve(){
	cin >> N;
	REP(i,0,N){
		int x,y;
		cin >> x >> y;
		w[i]=MP(x+y,i);
		s[i]=MP(x-y,i);
	}
	sort(s,s+N);
	sort(w,w+N);
	
	int lb=0,ub=600000;
	while(true){
		if(ub-lb<=1){
			if(Check(lb)) ub=lb;
			break;
		}
		int mid=(lb+ub)/2;
		if(Check(mid)) ub=mid;
		else lb=mid;
	}
	
	cout << ub << endl;
}

int main(){
	std::ios::sync_with_stdio(false);
	std::cin.tie(0);
	Solve();
	return 0;
}