#include<bits/stdc++.h>
using namespace std;
int n;
struct t{
int l,r;
}a[10001];
bool cmp(t x,t y)
{
if(x.l<y.l)return true;
else if(x.l==y.l&&x.r<y.r)return true;
return false;
}
int maxh,maxn;
int main()
{
memset(a,0,sizeof(a));
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i].l>>a[i].r;
}
sort(a+1,a+n+1,cmp);
int mx=0;
for(int i=0;i<n;i++)
{
if(a[i].r>=a[i+1].l)
{
mx+=a[i+1].r-a[i].r;
}
else
{
maxh=max(mx,maxh);
mx=a[i+1].r-a[i+1].l;
if(i!=0)maxn=max(maxn,a[i+1].l-a[i].r);
}
}
maxh=max(mx,maxh);
cout<<maxh<<' '<<maxn<<endl;
return 0;
}