
n = gets.to_i

lr = []
n.times do |i|
  l, r = gets.split.map(&:to_i)
  lr << [l, r]# l r
end

# pp lr
res = 0
lrsl = lr.sort_by{|x|x[0]} # l

# p lrsl

rmin = [lrsl[0][1]]
lrsl.map{|x|x[1]}.inject do |m,i|
  min = m < i ? m : i
  rmin << min
  min
end
# p rmin

rminr = [lrsl[-1][1]]
lrsl.reverse.map{|x|x[1]}.inject do |m,i|
  min = m < i ? m : i
  rminr << min
  min
end
rminr.reverse!
# p rminr




(n-1).times do |i|
  # puts '-----'
  lll = lrsl[i][0]
  rrr = rmin[i]
  #p rrr = lrsl[0..i].map{|x|x[1]}.min
  fast = rrr - lll + 1
  # puts '-'
  lll = lrsl[-1][0]
  rrr = rminr[i+1]
  #p rrr = lrsl[(i+1)..(n-1)].map{|x|x[1]}.min
  last = rrr - lll + 1
  # puts '-'
  r = fast + last
  res = r if r > res
end

p res

# puts '-----------------'
# exit
# pp lrsr = lr.sort_by{|x|x[1]} # r
# (n-1).times do |i|
#   puts '-----'
#   p lrsr[0..i]
#   lll = lrsr[0..i][-1][0]
#   rrr = lrsr[0..i].map{|x|x[1]}.min
#   p [lll,rrr]
#   p rrr - lll + 1
#   puts '-'
#   p lrsl[(i+1)..(n-1)]
#   lll = lrsl[(i+1)..(n-1)][-1][0]
#   rrr = lrsl[(i+1)..(n-1)].map{|x|x[1]}.min
#   p [lll,rrr]
#   p rrr - lll + 1
# end



# 6 34 540049931
