#include <bits/stdc++.h>
using namespace std;
long long n,begin,end,ans1,ans2;
struct w{
long long start,finish;
}m[5005];
inline bool px(w a, w b){
return a.start<b.start;
}
inline void answer(){
for(int i=2;i<=n;++i){
if(m[i].start<=end)
end=max(end,m[i].finish);
else{
ans1=max(ans1,end-begin);
ans2=max(ans2,m[i].start-end);
begin=m[i].start;
end=m[i].finish;
}
}
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;++i)
scanf("%d%d",&m[i].start,&m[i].finish);
sort(m+1,m+1+n,px);
begin=m[1].start,end=m[1].finish;
answer();
ans1=max(ans1,end-begin);
printf("%d %d",ans1,ans2);
return 0;
}