#include<bits/stdc++.h>
using namespace std;

#include <ext/pb_ds/assoc_container.hpp> 
#include <ext/pb_ds/tree_policy.hpp> 
using namespace __gnu_pbds; 

#define ll long long
#define db double
#define el "\n"
#define ld long double
#define rep(i,n) for(int i=0;i<n;i++)
#define rev(i,n) for(int i=n;i>=0;i--)
#define rep_a(i,a,n) for(int i=a;i<n;i++)
#define all(ds) ds.begin(), ds.end()
#define ff first
#define ss second
#define pb push_back
#define mp make_pair
typedef vector< long long > vi;
typedef pair<long long, long long> ii;
typedef priority_queue <ll> pq;
#define o_set tree<ll, null_type,less<ll>, rb_tree_tag,tree_order_statistics_node_update> 

const ll mod = 1000000007;
const ll INF = (ll)1e18;
const ll MAXN = 1000006;

ll po(ll x, ll n){ 
    ll ans=1;
    while(n>0){ if(n&1) ans=(ans*x)%mod; x=(x*x)%mod; n/=2;}
    return ans;
}


int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    int T=1;
    //cin >> T;
    while(T--){
        
        int n;
        cin>>n;

        vector<ii> x,y;
        ll _x,_y;
        rep(i,n){
            cin>>_x>>_y;
            x.pb(mp(_x, _y));
            y.pb(mp(_y, _x));
        }

        sort(all(x));
        sort(all(y));

        vi z;
        if(x[n-1].ff-x[0].ff>=abs(x[n-1].ss-x[0].ss)) z.pb(x[n-1].ff-x[0].ff);
        if(x[n-1].ff-x[1].ff>=abs(x[n-1].ss-x[1].ss)) z.pb(x[n-1].ff-x[1].ff);
        if(x[n-2].ff-x[0].ff>=abs(x[n-2].ss-x[0].ss))z.pb(x[n-2].ff-x[0].ff);
        if(y[n-1].ff-y[0].ff>abs(y[n-1].ss-y[0].ss)) z.pb(y[n-1].ff-y[0].ff);
        if(y[n-1].ff-y[1].ff>abs(y[n-1].ss-y[1].ss)) z.pb(y[n-1].ff-y[1].ff);
        if(y[n-2].ff-y[0].ff>abs(y[n-2].ss-y[0].ss)) z.pb(y[n-2].ff-y[0].ff);
        sort(all(z));
        int k = z.size();
        cout<<z[k-2]<<el;

    
    }
    cerr << "Time : " << 1000 * ((double)clock()) / (double)CLOCKS_PER_SEC << "ms\n";
    return 0;
}
// D - Circle Lattice Points
#include <bits/stdc++.h>
using namespace std;
using ll = int64_t;
using dbl = long double;

int main(){
	ll scale = 1e4;
	dbl x, y, r; cin>>x>>y>>r;
	ll X = round(x*scale);
	ll Y = round(y*scale);
	ll R = round(r*scale);
	ll r2 = R*R;
	ll ans = 0;
	for(ll i=0; i<=2*R+scale; i+=scale){
		ll y = floor((Y+R)/scale)*scale - i;
		ll dy = Y - y;
		ll dx2 = r2 - dy*dy;
		if(dx2 < 0) continue;
		ll dx = floor(sqrt((dbl)dx2));
		ll L = ceil((X - dx)/(dbl)scale);
		ll R = floor((X + dx)/(dbl)scale);
		ans += R - L + 1;
	}
	cout<< ans <<endl;
}
