program kam_patiketi_paslapti;
  { 102 u‘davinys }
  const max = 100;   { maksimalus asmen— skai‡ius }
        pradbyla = 'PASLAPT.DAT';
        rezbyla  = 'PASLAPT.REZ';
  type  paslaib = array [1..max] of set of 1..max; { su kuo kiekvienas }
                                        { draugas dalijasi paslaptimis }

  function paslaptys (pasl : paslaib) : integer;
                     {  aibŠ suražyti kiekvieno asmens draugai - }
                     { t.y. ‘mon‚s su kuriais jis paslaptimis dalinasi }
                     { tiesiogiai }
    var paslsk, i, j : integer;
        turi : boolean; { ar aib‚s turi bendr— element— }
  begin
    { pirmiausia sujungiamos aib‚s, turin‡ios bendr— element— }
    for i := 1 to max do
      begin
        turi := false; { nerasta aibi—, turin‡i— bendr— element— su aibe i }
        for j := i + 1 to max do
          if pasl[i] * pasl[j] <> []
             then begin
                    pasl[j] := pasl[j] + pasl[i];
                    turi := true;
                 end;
        if turi then pasl[i] := []
      end;
    { liko aib‚s, neturin‡ios bendr— element—  }
    { paslap‡i— tiek, kiek liko netuž‡i— aibi— }
    paslsk := 0;
    for i := 1 to max do
      if pasl[i] <> []
         then paslsk := paslsk + 1;
    paslaptys := paslsk
  end;
{----------------------------------------------------------}
   var prad, rez : text;
       pasl : paslaib;
       paslsk, i, n, a, b : integer;
begin
  assign (prad, pradbyla);
  reset (prad);
  readln (prad, n);
  for i := 1 to max do
      pasl[i] := [];
  {  kiekvien… aibŠ suražomi asmen— draug— kodai - t.y. kodai }
  { asmen—, su kuriais atitinkamas asmuo tiesiogiai dalinasi paslaptimis }
  for i := 1 to n do
      begin
        readln (prad, a, b);
        pasl[a] := pasl[a] + [a] + [b];
        pasl[b] := pasl[b] + [a] + [b];
      end;
  close (prad);

  paslsk := paslaptys (pasl);

  assign (rez, rezbyla);
  rewrite (rez);
  writeln (rez, paslsk);
  close (rez)
end.










