#include<bits/stdc++.h>
using namespace std;
struct f{
int l;
int r;
}a[100001];
bool cmp(f b,f c)
{
return b.l<c.l;
}
int main()
{
int len;
cin>>len;
for(int i=0;i<len;i++)
{
cin>>a[i].l>>a[i].r;
}
if(len==1)
{
cout<<a[0].r-a[0].l<<" "<<0;
return 0;
}
int maxl=0;
int maxr=0;
for(int i=0;i<len;i++)
{
if(a[i].r>=a[i+1].l&&a[i].r<a[i+1].r)
{
if(maxl<(a[i+1].r-a[i].l))
{
maxl=a[i+1].r-a[i].l;
}
}
else if(a[i].r==a[i+1].r)
{
if(a[i].l>a[i+1].l&&maxl<a[i].r-a[i].l)
{
maxl=a[i].r-a[i].l;
}
else if(a[i].l<a[i+1].l&&a[i+1].r-a[i+1].l>maxl)
{
maxl=a[i+1].r-a[i+1].l;
}
}
else if(a[i].r<a[i+1].l)
{
if(maxr<(a[i+1].l-a[i].r))
{
maxr=a[i+1].l-a[i].r;
}
}
}
cout<<maxl<<" "<<maxr;
return 0;
}