
{ Solution made by: Vidmantas Maskoli–nas, Marijampol‚s 6 v.m, 9 kl., Lithuania }


type TInt = record a, b: longint end;  { Intervalo duomenys -- a ir b }
     TIv = array [1..1001] of TInt;    { Interval— rinkinys }

var byla: text;
    iv, rez: TIv;  { nesur×Õiuoti (pradiniai intervalai) ir rezultatai }
    n, i, ii, k: longint;  { k -- rezultato interval— skai‡ius }

procedure Rusiuoti(var d:TIv);
{ Proced–ra sur–žiuoja interval… d pagal a reikžmŠ did‚jimo tvarka }
{ R–žiavimas paremtas burbulo algoritmu, bet galima padaryti ir efektyvesn }
var i: longint;
    t: TInt;
begin
  i := 1;
  while i < n do
    if d [i].a <= d [i + 1].a
       then inc(i)
       else begin
              t := d [i]; d [i] := d [i + 1]; d [i + 1] := t;
              if i > 1 then dec(i)
                       else Inc(i)
            end
end;

function did(a, b: longint): longint;
{ Funkcija randa didesnj iž duot— dviej— skai‡i— }
begin
  if b > a then did := b
           else did := a
end;

procedure Duomenys;
{ Perskaito pradinius duomenis }
begin
  assign(byla, 'KOMP.DAT');
  reset(byla);
  readln(byla, n);
  for i := 1 to n do readln(byla, iv [i].a, iv [i].b);
  close(byla);
end;

procedure Rezultatai;
{ Iž rezultato interval— ižrenka did‘iausi… tarp… ir did‘iausi… interval… }
begin
  assign(byla, 'KOMP.REZ');
  rewrite(byla);
  rez [k + 1].a := 8640001;
  ii := rez [1].a;
  for i := 1 to k do
    ii := did(ii, (rez [i + 1].a) - (rez [i].b) - 1);
  writeln(byla, ii);
  ii := 0;
  for i := 1 to k do
    ii := did(ii, rez [i].b - rez [i].a + 1);
  writeln(byla, ii);
  close(byla)
end;

procedure Intervalai;
{ Proced–ra sutraukia duomen— intervalus (gaunami rezultat— intervalai) }
begin
  rez [1] := iv [1];
  k := 1;
  for i := 2 to n do
    if iv [i].a <= rez [k].b
       then rez [k].b := did(rez [k].b, iv [i].b)
       else begin
              inc(k);
              rez [k] := iv [i]
            end;
end;

begin
  Duomenys;
  Rusiuoti(iv);
  Intervalai;
  Rezultatai
end.