Program FunList;

Type tPItem = ^tItem;
     tItem  = Record
                Next : tPItem;
                Content : String
              End;

Var Root : tPItem;
    Item : tPItem;

Procedure InsertItem ( Var List : tPItem; NewItem : tPItem ); Far; External;

Procedure ShowList ( List : tPItem ); Far; External;

{$L FUNUTILS}

Begin
  Root := Nil;
  While Not Eof Do Begin
    Item := New(tPItem);
    ReadLn(Item^.Content);
    InsertItem(Root,Item)
  End;
  ShowList(Root);
  While Root <> Nil Do Begin
    Item := Root;
    Root := Root^.Next;
    Dispose(Item)
  End
End.