#include <bits/stdc++.h>
using namespace std;
int l(vector<pair<int, int>> v) {
  int x(-1), y(1000000001);
  for (int i(0); i < v.size(); i++) {
    if (v[i].first > x) x = v[i].first;
    if (v[i].second < y) y = v[i].second;
  }
  return (y - x) * (y - x > 0);
}
int main() {
  int n, x, y;
  cin >> n;
  vector<pair<int, int>> v1(n);
  vector<pair<int, int>> v2(n);
  for (int i(0); i < n; i++) {
    cin >> x >> y;
    v1[i] = make_pair(x, y);
    v2[i] = make_pair(y, x);
  }
  sort(v1.begin(), v1.end());
  sort(v2.begin(), v2.end());
  int lo, hi;
  for (int i(n - 1); i >= 0; i--) {
    if (v2[i].first == v2[0].first) {
      hi = i;
      break;
    }
  }
  for (int i(0); i < n; i++) {
    if (v1[i].first == v1[n - 1].first) {
      lo = i;
      break;
    }
  }
  v1.erase(v1.begin() + lo);
  v2.erase(v2.begin() + hi);
  for (int i(0); i < v2.size(); i++) {
    int nh = v2[i].first;
    v2[i].first = v2[i].second;
    v2[i].second = nh;
  }
  cout << max(l(v1), l(v2));
  return 0;
}
