#include <bits/stdc++.h>
using namespace std;
multiset<long long> l, r;
int main() {
  pair<long long, long long> s[300010];
  long long n;
  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> s[i].first >> s[i].second;
    l.insert(s[i].first);
    r.insert(s[i].second);
  }
  long long best = 0;
  for (int i = 0; i < n; i++) {
    l.erase(l.find(s[i].first));
    r.erase(r.find(s[i].second));
    best = max(best, *r.begin() - *l.rbegin());
    l.insert(s[i].first);
    r.insert(s[i].second);
  }
  cout << best << endl;
}
