uses crt;

type tree = ^cel;
     cel  = record
              next:tree;
              i:integer;
              s:string
            end;

var f: tree;
    n: integer;

procedure rc(var c:tree);
 begin
  if c=nil then new(c);
  with c^ do begin
   i:=n;
   inc(n);
   readln(s);
   if s<>'' then begin new(next); rc(next); end
            else next := nil;
  end;
 end;

procedure wc(c:tree);
 begin
  if c<>nil then with c^ do if s<>'' then begin
   writeln(i,': ',s);
   wc(next);
  end;
 end;

procedure delcel(c:tree);
 begin
  if c=nil then exit;
  delcel(c^.next);
  dispose(c);
 end;

begin
clrscr;
  n:=0;
  rc(f);
  wc(f);
  delcel(f);

  readkey;
end.
