type
pnode= ^node;
node= record
data: integer;
next: pnode;
end;
var
first, current, prev: pnode;
n,dat,i: integer;
flag: boolean;
begin
{initializing}
first:= nil;
current:= nil;
prev:= nil;
n:=0;
flag:= false;
{get number of nodes in list}
write('Enter elements quantity: ');
readln(n);
new(first);
write('Element #1= ');
readln(dat);
first^.data:= dat;
first^.next:= nil;
prev:= first;
for i:= 2 to n do
begin {fill nodes with nubmers from keyboard input}
new(current);
write('Element #',i,'= ');
readln(dat);
current^.data:=dat;
prev^.next:=current;
prev:= current;
end;
prev:=first^.next;
{search dublicates in list}
while prev <> nil do
begin
current:= first;
while current <> nil do
begin
flag:= (prev^.data = current^.data) and (current <> prev);
if flag then break;
current:=current^.next;
end;
if flag then
begin
writeln('There are dublicates');
break;
end;
prev:= prev^.next;
end;
{list output}
current:=first;
for i:=1 to n do
begin
write(current^.data,' ');
current:=current^.next;
end;
{freee memory}
for i:=1 to n do
begin
current:= first^.next;
dispose(first);
first:= current;
end;
readln;
end.