program usecky;
 var f: text;
     i,j,n,k,j1,j2,l: integer;
     x,y :array[1..100,1..2] of integer;
     a,b :array[1..100] of integer;

function prusecik(ii,jj:integer):boolean;
 var t,s: real;
     d1x,d2x,d1y,d2y,dx,dy,d: real;
 begin
  prusecik:=false;
  d1x:=x[ii,2]-x[ii,1];
  d1y:=y[ii,2]-y[ii,1];
  d2x:=x[jj,2]-x[jj,1];
  d2y:=y[jj,2]-y[jj,1];
  dx:=x[ii,1]-x[jj,1];
  dy:=y[ii,1]-y[jj,1];
  d:=d1x*d2y-d1y*d2x;
  if (d<>0) then begin
              s:=(d1x*dy-d1y*dx)/d;
              t:=(d2x*dy-d2y*dx)/d;
              prusecik:=(s>=0)and(s<=1)and(t>=0)and(t<=1);
              exit;
            end;
  if ((dy*d1x)=(dx*d1y)) then
    writeln('program nedodelan pro usecky lezici v primce');
end;

begin
{nacteni dat}
 assign(f,'vstup.txt');
 reset(f);
 i:=1;
 repeat
   readln(f,x[i,1],y[i,1],x[i,2],y[i,2]);
   i:=i+1;
 until eof(f);
 close(f);
 n:=i-1;
{ write('dvojice usecek:');
 readln(i,j);
 write('prusecik: ',prusecik(i,j));
 readln;
 writeln('=====================================');}
{hledani poctu otvoru}
 for i:=1 to n do a[i]:=i;
 j1:=1; j2:=1;
 k:=n; l:=0;
 while k>0 do
   if j1=j2 then begin
              b[j2]:=a[k];
              k:=k-1;
              j2:=j2+1;
              l:=l+1
            end
            else begin
              i:=1;
              while i<=k do begin
                if prusecik(b[j1],a[i]) then begin
                                          b[j2]:=a[i];
                                          j2:=j2+1;
                                          a[i]:=a[k];
                                          k:=k-1;
                                         end;
                i:=i+1
              end;
              j1:=j1+1
            end;
 writeln('pocet otvoru: ',l);
 readln;
 writeln('=====================================')
end.