#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, i, j, k = 0, t, f = 1;
  cin >> n;
  vector<pair<int, int>> a(n);
  for (i = 0; i < n; i++) {
    cin >> a[i].first >> a[i].second;
  }
  multiset<int> q;
  multiset<int> w;
  for (i = 0; i < n; i++) {
    q.insert(a[i].first);
    w.insert(a[i].second);
  }
  vector<int> d;
  for (i = 0; i < n; i++) {
    q.erase(q.find(a[i].first));
    w.erase(w.find(a[i].second));
    auto itr = (--q.end());
    auto it = w.begin();
    if (*it - *itr > 0) {
      t = *it - *itr;
      d.push_back(t);
    } else {
      d.push_back(0);
    }
    q.insert(a[i].first);
    w.insert(a[i].second);
  }
  sort(d.begin(), d.end());
  reverse(d.begin(), d.end());
  cout << d[0];
  return 0;
}
