(*
 * forall l r (p : forall n, l < n <= r -> bool),
 *   ( exists m,
 *     l < m <= r /\ forall n H, p n H = true <-> m <= n ) ->
 *   { m |
 *     l < m <= r /\ forall n H, p n H = true <-> m <= n }
 *)
let rec lower_bound l r p =
  if r <= 1 + l
  then r
  else let m = (l + r) / 2 in
       if p m
       then lower_bound l m p
       else lower_bound m r p

let rec upper_bound l r p =
  if r <= 1 + l
  then l
  else let m = (l + r) / 2 in
       if p m 
       then upper_bound m r p
       else upper_bound l m p

let () = Scanf.scanf "%d\n" @@ fun n ->
  let abs = Array.init n @@ fun _ -> Scanf.scanf "%d %d\n" @@ fun a b -> a, b in
  let r = 
    upper_bound 0 10000000000 @@ fun m ->
      (n + 1) / 2 <=
        Array.fold_left (fun acc (_, b) ->
          acc + if m <= b then 1 else 0) 0 abs in
  let l =
    lower_bound 0 10000000000 (fun m ->
      ( <= ) ((n + 1) / 2) @@
      Array.fold_left (fun acc (a, _) ->
        acc + if a <= m then 1 else 0) 0 abs) in
  Printf.printf "%d\n" @@
  if n mod 2 = 1
  then r - l + 1
  else
    2 * r
    - (if (n + 3) / 2 <=
      Array.fold_left (fun acc (_, b) ->
        acc + if r <= b then 1 else 0) 0 abs then 0 else 1)
    - 2 * l
    - (if (n + 3) / 2 <=
      Array.fold_left (fun acc (a, _) ->
        acc + if a <= l then 1 else 0) 0 abs then 0 else 1)
    + 1
