// https://atcoder.jp/contests/joi2010ho/tasks/joi2010ho_d //g++ 1.cpp -std=c++14 -O2 -I . #include using namespace std; #include using namespace atcoder; using ll = long long; using ld = long double; using vi = vector; using vvi = vector; using vll = vector; using vvll = vector; using vld = vector; using vvld = vector; using vst = vector; using vvst = vector; #define fi first #define se second #define pb push_back #define eb emplace_back #define pq_big(T) priority_queue,less> #define pq_small(T) priority_queue,greater> #define all(a) a.begin(),a.end() #define rep(i,start,end) for(ll i=start;i<(ll)(end);i++) #define per(i,start,end) for(ll i=start;i>=(ll)(end);i--) #define uniq(a) sort(all(a));a.erase(unique(all(a)),a.end()) int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int n; cin>>n; ll min_w=1e9,max_w=-1e9; ll min_v=1e9,max_v=-1e9; vector> p(n); rep(i,0,n){ ll x,y; cin>>x>>y; ll w=x+y,v=x-y; p[i]={w,v}; min_w=min(min_w,w); max_w=max(max_w,w); min_v=min(min_v,v); max_v=max(max_v,v); } ll ng=-1,ok=2e9; while(ok-ng>1){ ll check=(ok+ng)/2; int flg=0; int flg2; flg2=1; rep(i,0,n){ auto [w,v]=p[i]; int flg3=0; if(abs(min_w-w)<=check&&abs(min_v-v)<=check){ flg3=1; } if(abs(max_w-w)<=check&&abs(max_v-v)<=check){ flg3=1; } flg2=min(flg2,flg3); } flg=max(flg,flg2); flg2=1; rep(i,0,n){ auto [w,v]=p[i]; int flg3=0; if(abs(min_w-w)<=check&&abs(max_v-v)<=check){ flg3=1; } if(abs(max_w-w)<=check&&abs(min_v-v)<=check){ flg3=1; } flg2=min(flg2,flg3); } flg=max(flg,flg2); if(flg==1){ ok=check; } else{ ng=check; } } cout<