#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int yjj[1000000];
int xyy[1000000];
int main()
{
    yjj[0]=0;xyy[0]=0;
    int n,a,b,c=0,i=1,mx=0;
    cin>>n;//总共n组表示n高度,这里可以看成是n层,每组中的两个数表示该层的突出度
    while(n--)
    {
        cin>>a>>b;//选择两个数中的其中一个数,使它与上层高度相减的值为最大即可
        xyy[i]=min(a,b);
        yjj[i]=max(a,b);//利用两组数组,记录最小值和最大值
        i++;
    }
    for(int j=1;j<i;j++)
    {
        mx=max(mx,yjj[j]-xyy[j-1]);//将该组最大值和上组最小值相减,并于其他相减的值比较得出最大值
    }
    cout<<mx;
    return 0;
}