output_description: Print the maximum possible total joyfulness of the two contests.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N
      L_1 R_1
      L_2 R_2
      \vdots
      L_N R_N
attempt: # -*- coding: utf-8 -*-
  import bisect
  import heapq
  import math
  import random
  import sys
  from collections import Counter, defaultdict, deque
  from decimal import ROUND_CEILING, ROUND_HALF_UP, Decimal
  from functools import lru_cache, reduce
  from itertools import combinations, combinations_with_replacement, product, permutations
  from operator import add, mul, sub
  
  sys.setrecursionlimit(100000)
  input = sys.stdin.readline
  INF = 2**62 - 1
  
  
  def read_int():
      return int(input())
  
  
  def read_int_n():
      return list(map(int, input().split()))
  
  
  def read_float():
      return float(input())
  
  
  def read_float_n():
      return list(map(float, input().split()))
  
  
  def read_str():
      return input().strip()
  
  
  def read_str_n():
      return list(map(str, input().split()))
  
  
  def error_print(*args):
      print(*args, file=sys.stderr)
  
  
  def mt(f):
      import time
  
      def wrap(*args, **kwargs):
          s = time.time()
          ret = f(*args, **kwargs)
          e = time.time()
  
          error_print(e - s, "sec")
          return ret
  
      return wrap
  
  
  @mt
  def slv(N, LR):
      LR.sort(key=lambda x: x[1], reverse=True)
      LR.sort(key=lambda x: x[0])
  
      lc = []
      l = 0
      r = INF
      for i in range(N):
          l_, r_ = LR[i]
          l = max(l, l_)
          r = min(r, r_)
          lc.append(max(0, r - l + 1))
  
      rc = []
      l = 0
      r = INF
      for i in range(N - 1, -1, -1):
          l_, r_ = LR[i]
          l = max(l, l_)
          r = min(r, r_)
          rc.append(max(0, r - l + 1))
  
      ans = 0
      for i in range(N - 1):
          ans = max(ans, lc[i] + rc[N - 1 - 1 - i])
      return ans
  
  
  def main():
      N = read_int()
      LR = [read_int_n() for _ in range(N)]
      print(slv(N, LR))
  
  
  if __name__ == "__main__":
      main()
  
problem_description: Statement
  
  10^9 contestants, numbered 1 to 10^9, will compete in a competition. There
  will be two contests in this competition.
  
  The organizer prepared N problems, numbered 1 to N, to use in these contests.
  When Problem i is presented in a contest, it will be solved by all contestants
  from Contestant L_i to Contestant R_i (inclusive), and will not be solved by
  any other contestants.
  
  The organizer will use these N problems in the two contests. Each problem must
  be used in exactly one of the contests, and each contest must have at least
  one problem.
  
  The _joyfulness_ of each contest is the number of contestants who will solve
  all the problems in the contest. Find the maximum possible total joyfulness of
  the two contests.
samples: [{"input": "4\n    4 7\n    1 4\n    5 8\n    2 5", "output": "6\n    \n\nThe optimal choice is:\n\n  * Use Problem 1 and 3 in the first contest. Contestant 5, 6, and 7 will solve both of them, so the joyfulness of this contest is 3.\n  * Use Problem 2 and 4 in the second contest. Contestant 2, 3, and 4 will solve both of them, so the joyfulness of this contest is 3.\n  * The total joyfulness of these two contests is 6. We cannot make the total joyfulness greater than 6.\n\n* * *"}, {"input": "4\n    1 20\n    2 19\n    3 18\n    4 17", "output": "34\n    \n\n* * *"}, {"input": "10\n    457835016 996058008\n    456475528 529149798\n    455108441 512701454\n    455817105 523506955\n    457368248 814532746\n    455073228 459494089\n    456651538 774276744\n    457667152 974637457\n    457293701 800549465\n    456580262 636471526", "output": "540049931"}]