Нужно решить программу на паскале. тема: двунаправленные

Формулировка:
Найти последнее вхождение заданного элемента в список, и определить количество элементов, идущих после него;
И так..
Первая часть программы, уже есть. Это процедуры добавления элемента:
program spisok_2;
uses
crt;
type
ptrrec=^rec;
rec=record
data:integer;
next:ptrrec; prev:ptrrec;
end;
var L,pbegin,pend,pckey,paux:ptrrec;
n,i,a, x, y, d:integer;
{процедура добавления элемента в список}
Procedure dob(Var L:Ptrrec; D:integer);
Var Q:Ptrrec;
begin
New(Q);
Q^.Data:=D;
Q^.Next:=L;
L:=Q;
end;
{процедура вывода}
procedure print(pbegin:ptrrec);
var paux:ptrrec;
begin
paux:=pbegin;
while paux<>nil do
begin
write(paux^.data, ' ');
paux:=paux^.next;
end;
writeln;
end;