#include <bits/stdc++.h>
using namespace std;
int a[300000 + 5], b[300000 + 5], r_max[300000 + 5], l_max[300000 + 5],
    r_min[300000 + 5], l_min[300000 + 5];
int min(int a, int b) { return (a > b) ? b : a; }
int max(int a, int b) { return (a < b) ? b : a; }
int main() {
  int n;
  cin >> n;
  l_min[0] = r_min[n + 1] = int(1E9) + 1;
  r_max[0] = l_max[n + 1] = -1;
  for (int i = 1; i <= n; i++) cin >> a[i] >> b[i];
  for (int i = 1; i <= n; i++) {
    l_min[i] = min(l_min[i - 1], b[i]);
    l_max[i] = max(l_max[i - 1], a[i]);
  }
  for (int i = n; i >= 1; i--) {
    r_min[i] = min(r_min[i + 1], b[i]);
    r_max[i] = max(r_max[i + 1], a[i]);
  }
  int ans = 0;
  for (int i = 1; i <= n; i++) {
    ans = max(
        ans, min(l_min[i - 1], r_min[i + 1]) - max(l_max[i - 1], r_max[i + 1]));
  }
  cout << ans;
  return 0;
}
