#include <bits/stdc++.h>
using namespace std;
template <class T1>
inline void sort(T1 &arr) {
  sort(arr.begin(), arr.end());
}
template <class T1>
inline void rsort(T1 &arr) {
  sort(arr.rbegin(), arr.rend());
}
long long n;
const int sz = 300 * 1000 + 5;
long long x[sz], y[sz];
multiset<long long> l, r;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> x[i] >> y[i];
    l.insert(x[i]);
    r.insert(y[i]);
  }
  long long ans = 0;
  for (int i = 0; i < n; i++) {
    l.erase(l.find(x[i]));
    r.erase(r.find(y[i]));
    ans = max(ans, *r.begin() - *(--l.end()));
    l.insert(x[i]);
    r.insert(y[i]);
  }
  cout << ans;
}
