unittest
{
	assert( [ "2", "1 2", "2 3" ].solve == 3 );
	assert( [ "3", "100 100", "10 10000", "1 1000000000" ].solve == 9991 );
}



import std.algorithm;
import std.conv;
import std.format;
import std.range;
import std.stdio;

void main()
{
	stdin.byLineCopy.solve.writeln;
}

auto solve( Range )( Range input )
if( isInputRange!Range && is( ElementType!Range == string ) )
{
	auto n = 0L;
	auto m = 0L;
	input.front.formattedRead!"%s %s"( n, m );
	auto as = new long[ n ];
	auto bs = new long[ n ];
	foreach( ref a, ref b; lockstep( as, bs ) )
	{
		input.popFront;
		auto ab = input.front.split.to!( long[] );
		a = ab[ 0 ];
		b = ab[ 1 ];
	}
	
	// 中央値の最小を計算
	as.sort;
	auto mi = ( as.length % 2 == 0 ) ? ( as[ $ / 2 - 1 ] + as[ $ / 2 ] ) : as[ $ / 2 ];
	
	// 中央値の最大を計算
	bs.sort;
	auto ma = ( bs.length % 2 == 0 ) ? ( bs[ $ / 2 - 1 ] + bs[ $ / 2 ] ) : bs[ $ / 2 ];
	
	// 中央値の個数を計算（最小～最大の間は、nが偶数のときは0.5刻み、nが奇数のときは1刻みで作れる）
	return ma - mi + 1;
}
