
{ Solution made by Jurgis Pažukonis, VTGTM lic‚jus, 10 kl., Lithuania }


program keliai;

  var m : array [0 .. 50, 0 .. 50] of boolean;
                { jei m[a,b] = true, tai kelias iž a  b yra }
      r1, r2, bv : array [0 .. 50] of boolean;
        { r1, r2 - A ir B dalies rezultatai,
          bv - kuriuose tažkuose buvome, eidami iž tažko 0  n }
      f : text;
      a, n, ck, c1, c2, k1, k2 : integer;
      ok : boolean;

  procedure einam (a, b, ng : integer);
                    { einame Paiežkos  gyl metodu
                      a - tažkas, kuriame esame,
                      b - tažkas  kur reikia patekti,
                      ng - tažkas, per kuri negalima eiti (ižmestasis) }
    var c : integer;
  begin
    bv[a] := true;
    if a <> b then
      for c := 0 to n do
        if (not bv[b]) and (not bv[c]) and (c <> ng) and m[a,c]
           then einam (c, b, ng)
  end;


begin
  assign (f, 'input.txt'); reset (f);
  fillchar (m, sizeof (m), false);
  fillchar (r1, sizeof (r1), false);
  fillchar (r2, sizeof (r2), false);
  n := -1;
  repeat                { perskaitome pradinius duomenis }
    read (f, a);
    inc (n);
    while a >= 0 do
      begin m[n,a] := true; read (f, a) end;
    if a = -2 then readln (f);
  until a = -1;
  close (f);

  k1 := 0; k2 := 0;
  for ck := 1 to n - 1 do   { tikriname visus tažkus nuo 1 iki n-1 }
    begin
      fillchar (bv, sizeof (bv), false); { prad‘ioje niekur nebuvome }
      einam (0, n, ck);                  { einame iž 0  n }
      if not bv[n] then                  { jei nepavyko nueiti ... }
        begin
          r1[ck] := true; inc (k1);  { ... tai jau A dalies sprendinys }
          ok := true;
          for c1 := 1 to n-1 do  { iežkome kelio iž tažko, kuriame nebuvome 
                                                       tažk…, kuriame buvome }
            if ok and (not bv[c1]) then
              for c2 := 0 to n-1 do
                if bv[c2] and m[c1,c2]
                  then ok := false;
          if ok then
             begin
               r2[ck] := true; inc (k2)
             end;
             { jei neradome tokio kelio, tai žis tažas yra B dalies sprendinys }
        end;
    end;

  assign (f, 'output.txt'); rewrite (f);      { u‘ražome rezultatus }
  write (f, k1);
  for ck := 1 to n-1 do
    if r1[ck] then write (f, ' ', ck);
  writeln (f);
  write (f, k2);
  for ck := 1 to n-1 do
    if r2[ck] then write (f, ' ', ck);
  writeln (f);
  close (f);
end.
