Uses CRT;
type
 PList = ^TList;
 TList = record
   num  : real;
   Next : PList;
 end;


function p26(L:PList):boolean;
var
 i,j,k : PList;
begin
  p26:=False;
  i:=L;
  while i <> nil do
  begin
   j:=i^.next;
   while j <> nil do
    begin
      k:=j^.next;
      while k <> nil do
      begin
        if (i^.num = j^.num) and (k^.num = j^.num) then
        begin
          p26:=true;
          exit;
        end;
        k:=k^.next;
      end;
      j:=j^.next;
    end;
   i:=i^.next;
  end;
end;{Задание}
{---------------------------------}

Function GetList:PList;
var
 N,p : PList;
 cur : real;
begin
  WriteLn('Вводите числа, заканичивая 0-м');
  read(cur);
  New(p);
  p^.num := cur;
  p^.Next := nil;
  while cur <> 0 do begin
   read(cur);
   New(N);
   N^.num := cur;
   N^.Next := p;
   p:=N;
  end;
  GetList := P;
end;

Procedure WriteList(var L : PList);
var
 P : Plist;
begin
  p:=L;
  while p<>nil do begin
    write(p^.num:0:2,'  ');
    p:=p^.next;
  end;
end;

var
  List : PList;

begin
  ClrScr;
  List := GetList;
  WriteLn('Список такой:');
  WriteList(List);
  WriteLn;
  If p26(List) then
   writeLn('Есть элементы, встечающиеся больше 2-х раз')
  else
   writeLn('Нет элементов, встечающиеся больше 2-х раз');
end.
