program televizijos_laidos;
  { 56 u‘davinys }

  const M = 30; { maksimalus laid— skai‡ius per par… }
  type lentele = array [1..M] of integer;

   { ‘emiau ižvardinti globalieji kintamieji }
   var l, { laid— ilgiai }
       k : lentele; { kaset‚s }
       viso, { paros laid— skai‡ius }
       maz, { ma‘iausias kase‡i— skai‡ius }
       kiek : integer; { paros laid—, trumpesni— nei 30 min. skai‡ius }

  function buvo (x : integer) : boolean;
    { tikrina, ar n‚ra dar vienos kaset‚s, kuri u‘pildyta }
    { tiek pat kiek kaset‚ x }
    var gerai : boolean;
        j : integer;
  begin
    gerai := false;
    for j := 1 to x - 1 do
     if k[j] = k[x]
        then gerai := true;
    buvo := gerai;
  end;

  procedure irasyti (laida, { kuri laida }
                     i, { Ť kuri… kasetŠ Ťražoma }
                     kas : integer { kiek kase‡i— jau panaudotos });
    { rekursin‚ proced–ra, Ťražin‚janti laidas }
    var j,
        prad, pab, { nuo kurios kaset‚s prad‚ti Ťražin‚ti ir kuria baigti }
        sk : integer; { kase‡i— skai‡ius }
  begin
    if laida = 0 { jei visos laidos jau Ťražytos }
       then if kas < maz
               then maz := kas
               else
       else if (k[i] + l[laida] < 60) and (kas < maz)
               { jei laid… Ť kasetŠ galima ir verta Ťražyti }
               then begin
                      { Ťražome ži… laid… }
                      if k[i] = 0  { jei pradedame nauj… kasetŠ }
                         then kas := kas + 1;
                      k[i] := k[i] + l[laida];
                      { rasime kasetŠ, nuo kurios reikia prad‚ti Ťražin‚ti }
                      { likusias laidas ir kuria baigti }
                      if laida <> viso   { jei sutampa žios ir praeitos }
                                         { laidos trukm‚ }
                         then if l[laida] = l[laida + 1]
                                 then prad := i
                                 else prad := 1
                          else prad := 1;
                      pab := kas + 1;
                      { bandysime Ťražyti likusias laidas }
                      for j := prad to pab do
                          if not buvo (j)
                             then irasyti (laida - 1, j, kas);
                       { atstatome buvusi… reikžmŠ }
                       k[i] := k[i] - l[laida];
                     end
  end;

  function kasetes : integer;
    var i, j : integer;
  begin
    for i := 1 to viso do
      k[i] := 0; { neu‘imta nei viena kaset‚ }
    maz := viso;
    { iž karto Ť atskiras kasetes suražome laidas, ilgesnes, nei 30 min. }
    j := 0; { prad‚sime nuo pirmos kaset‚s }
    i := 1; { ir nuo pirmos laidos }
    kiek := viso;
    while i <= kiek do
      if l[i] > 30
         then begin
                j := j + 1;
                k[j] := l[i];
                l[i] := l[kiek];
                kiek := kiek - 1;
              end
         else i := i + 1;
    for i := 1 to viso - kiek + 1 do
      irasyti (kiek, i, j)
  end;

   procedure rikiuoti (viso : integer;
                       var l : lentele);
    { surikiuoja skai‡ius nema‘‚jimo tvarka }
    { rikiuojama Burbuliuko metodu }
    var i, a : integer;
  begin
    i := 1;
    while i < viso do
      if l[i] >= l[i + 1]
         then i := i + 1
         else begin
                a := l[i];
                l[i] := l[i + 1];
                l[i + 1] := a;
                if i > 1
                   then i := i - 1
                   else i := i + 1;
              end
  end;

  var f : text;
      val1, min1, val2, min2 : integer;
begin
  assign (f, 'TELE.DAT');
  reset (f);
  viso := 0;
  while not eof (f) do
    begin
      readln (f, val1, min1, val2, min2);
      viso := viso + 1;
      if val1 < val2
         then l[viso] := (60 - min1) + min2 - 1
         else l[viso] := min2 - min1;
    end;
  rikiuoti (viso, l);
  kasetes;
  writeln (maz);
end.
