{ Генерация теста для задачи о знакомствах}
{ Личное первенство УрГУ-2000 }
{ Васильев С.Н.}

const max=1000; { Количество студентов}
percent=0.03;
macq=30; { Максимальное количество знакомых}
var acq:array[1..max,1..macq] of integer;
col:array[1..max] of byte;
i,j,k,l,a,b:integer;
fin, fout:text;
good:boolean;

begin
 for i := 1 to max do
  for j:=1 to macq do
   acq[i,j]:=-1;
 for i := 1 to max do col[i]:=0;

 randomize;
 for i := 1 to max do
  for j:=1 to macq do
   if random>1-percent then
    begin
     a:=random(max)+1; { знакомим номер i с номером a}
     good:=(col[i]<macq) and (col[a]<macq) and (a<>i);
     for k:=1 to col[i] do if acq[i,k]=a then good:=false;
     if good then
       begin
        inc(col[i]); inc(col[a]);
        acq[i,col[i]]:=a; acq[a,col[a]]:=i;
       end;
    end;




assign(fin,'input.txt');
rewrite(fin);
 writeln(fin,max);
 for i:=1 to max do
 begin
  k:=1;
  while (k<=macq)  and  ( (acq[i,k]=-1) or (acq[i,k]=i) ) do inc(k);
  if k<=macq then write(fin,acq[i,k]);
  for j:=k+1 to macq do
   if (acq[i,j]<>-1) and (i<>acq[i,j])
    then write(fin,' ',acq[i,j]);
  writeln(fin);
 end;
close(fin);

end.