#include<bits/stdc++.h>
#define l first
#define r second
using namespace std;
const int N=5010;
typedef pair<int,int>PII;
PII v[N];
int main()
{
int n;cin>>n;
for(int i=0;i<n;i++)
{
cin>>v[i].l>>v[i].r;
}
sort(v,v+n); //PII默认按照左端点排序
int res1=0,res2=0;
//合并
int L=v[0].l,R=v[0].r;
for(int i=1;i<n;i++) //从第二个区间开始枚举
{
//维护区间的右端点大于下一段区间的左端点就合并
if(v[i].l<=R)
{
R=max(R,v[i].r);
}
else //独立的区间
{
res1=max(res1,R-L); //res1保存所有维护区间中的最大长度
res2=max(res2,v[i].l-R); //当前维护的区间 与 第i个区间的距离
L=v[i].l,R=v[i].r;//更新维护区间为第i个区间
}
}
res1=max(res1,R-L); //更新一下最后维护区间的长度
cout<<res1<<" "<<res2<<endl;
return 0;
}