#include <iostream>
#include<stdio.h>
#include<algorithm>
using namespace std;
struct s
{
long long int start;
long long int endd;
} x[6000];
int cmp(struct s a,struct s b)
{
if(a.start!=b.start)
return a.start<b.start;
else
return a.endd<b.endd;
}
int main()
{
long long int i,j,n,a=0,b=0,s;
scanf("%lld",&n);
for(i=0; i<=n-1; i++)
scanf("%lld%lld",&x[i].start,&x[i].endd);
for(i=0; i<=n-1; i++)
{
if(i<=n-2)
{
s=x[i].endd;
if(s-x[i].start>a)
a=s-x[i].start;
for(j=i+1; j<=n-1; j++)
{
if(x[j].start<s&&x[j].endd>=x[i].endd)
s=x[j].endd;
else
break;
}
if(s-x[i].start>a)
a=s-x[i].start;
}
if(i==n-1)
if(x[i].endd-x[i].start>a)
a=x[i].endd-x[i].start;
}
for(i=0; i<=n-2; i++)
{
s=x[i].endd;
if(x[i+1].start>x[i].endd)
if(x[i+1].start-x[i].endd>b)
b=x[i+1].start-x[i].endd;
}
printf("%lld ",a);
printf("%lld\n",b);
}
#include<stdio.h>
#include<algorithm>
using namespace std;
struct s
{
long long int start;
long long int endd;
} x[6000];
int cmp(struct s a,struct s b)
{
if(a.start!=b.start)
return a.start<b.start;
else
return a.endd<b.endd;
}
int main()
{
long long int i,j,n,a=0,b=0,s;
scanf("%lld",&n);
for(i=0; i<=n-1; i++)
scanf("%lld%lld",&x[i].start,&x[i].endd);
for(i=0; i<=n-1; i++)
{
if(i<=n-2)
{
s=x[i].endd;
if(s-x[i].start>a)
a=s-x[i].start;
for(j=i+1; j<=n-1; j++)
{
if(x[j].start<s&&x[j].endd>=x[i].endd)
s=x[j].endd;
else
break;
}
if(s-x[i].start>a)
a=s-x[i].start;
}
if(i==n-1)
if(x[i].endd-x[i].start>a)
a=x[i].endd-x[i].start;
}
for(i=0; i<=n-2; i++)
{
s=x[i].endd;
if(x[i+1].start>x[i].endd)
if(x[i+1].start-x[i].endd>b)
b=x[i+1].start-x[i].endd;
}
printf("%lld ",a);
printf("%lld\n",b);
}