#include <bits/stdc++.h>
using namespace std;
#define int               long long
#define pb                push_back
#define ppb               pop_back
#define pf                push_front
#define ppf               pop_front
#define all(x)            (x).begin(),(x).end()
#define uniq(v)           (v).erase(unique(all(v)),(v).end())
#define sz(x)             (int)((x).size())
#define fr                first
#define sc                second
#define pii               pair<int,int>
#define rep(i,a,b)        for(int i=a;i<b;i++)
#define mem1(a)           memset(a,-1,sizeof(a))
#define mem0(a)           memset(a,0,sizeof(a))
#define ppc               __builtin_popcount
#define ppcll             __builtin_popcountll

template<typename T1,typename T2>istream& operator>>(istream& in,pair<T1,T2> &a){in>>a.fr>>a.sc;return in;}
template<typename T1,typename T2>ostream& operator<<(ostream& out,pair<T1,T2> a){out<<a.fr<<" "<<a.sc;return out;}
template<typename T,typename T1>T amax(T &a,T1 b){if(b>a)a=b;return a;}
template<typename T,typename T1>T amin(T &a,T1 b){if(b<a)a=b;return a;}

const long long INF=1e18;
const int32_t M=1e9+7;
const int32_t MM=998244353;

const int N=2e5+5;

int a[N],b[N];

void solve(){
	int n;
	cin>>n;
	rep(i,0,n){
		cin>>a[i]>>b[i];
	}
	if(n%2){
		int L=1,U=1e9,down,up;
		while(L<=U){
			int m=(L+U)/2;
			int big = 0,small = 0;
			rep(i,0,n){
				if(b[i] >= m){
					big++;
				}
				if(a[i] <=m){
					small++;
				}
			}
			if(small >= n/2 + 1){
				down = m;
				U = m - 1;
			}
			else{
				L = m + 1;
			}
		}
		L=1,U=1e9;
		while(L<=U){
			int m=(L+U)/2;
			int big = 0,small = 0;
			rep(i,0,n){
				if(b[i] >= m){
					big++;
				}
				if(a[i] <=m){
					small++;
				}
			}
			if(big >= n/2 + 1){
				up = m;
				L = m + 1;
			}
			else{
				U = m - 1;
			}
		}
		cout<<(up - down + 1);
	}
	else{
		int L=1,U=1e9,down,up,ndown,nup;
		while(L<=U){
			int m=(L+U)/2;
			int big = 0,small = 0;
			rep(i,0,n){
				if(b[i] >= m){
					big++;
				}
				if(a[i] <=m){
					small++;
				}
			}
			if(small >= n/2){
				down = m;
				U = m - 1;
			}
			else{
				L = m + 1;
			}
		}
		L=1,U=1e9;
		while(L<=U){
			int m=(L+U)/2;
			int big = 0,small = 0;
			rep(i,0,n){
				if(b[i] >= m){
					big++;
				}
				if(a[i] <=m){
					small++;
				}
			}
			if(big >= n/2 + 1){
				up = m;
				L = m + 1;
			}
			else{
				U = m - 1;
			}
		}
		L=1,U=1e9;
		while(L<=U){
			int m=(L+U)/2;
			int big = 0,small = 0;
			rep(i,0,n){
				if(b[i] >= m){
					big++;
				}
				if(a[i] <=m){
					small++;
				}
			}
			if(small >= n/2 + 1){
				ndown = m;
				U = m - 1;
			}
			else{
				L = m + 1;
			}
		}
		L=1,U=1e9;
		while(L<=U){
			int m=(L+U)/2;
			int big = 0,small = 0;
			rep(i,0,n){
				if(b[i] >= m){
					big++;
				}
				if(a[i] <=m){
					small++;
				}
			}
			if(big >= n/2){
				nup = m;
				L = m + 1;
			}
			else{
				U = m - 1;
			}
		}
		cout<<(nup+up) - (down+ndown) + 1;
	}
}
signed main(){
	ios_base::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	//freopen("input.txt", "r", stdin);
	//freopen("output.txt", "w", stdout);
	#ifdef SIEVE
		sieve();
	#endif
	#ifdef NCR
		init();
	#endif
	int t=1;
	//cin>>t;
	while(t--) solve();
	return 0;
}
