#include<bits/stdc++.h>
using namespace std;
int n,max1,max2;
struct node{
int l,r;
}a[1000005];
bool cmp(node a,node b){
if(a.l!=b.l) return a.l<b.l;
else return a.r<b.r;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i].l>>a[i].r;
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++){
if(i>1) max1=max(max1,a[i].l-a[i-1].r);
if(a[i].l<=a[i-1].r) a[i].l=a[i-1].l;
max2=max(max2,a[i].r-a[i].l);
}
cout<<max2<<" "<<max1;
return 0;
}