Работа с массивом

Здравствуйте. Мне нужно после каждого заданного элемента удалить элемент, если он отличен от предыдущего. Я написал программку, она у меня удаляет элементы, но смысл в том, что программа сравнивает все элементы, а не только которые стоят после предыдущего элемента т.е допустим 1 8 9 1, по сути он мне должен просто вывести 1, но выводит 1 1, находит все похожие элементы в массиве. Так вот я не пойму как это сделать, если не понятно, то ниже я привёл пример как должна работать программа.

Исходные элементы: 4 8 15 7 7 8 3 3
Массив после удаления элементов: 4 7 3
Т.е 4 <> 8, значит 8 удаляется, 8 <> 15, значит 15 удаляется, 15 <> 7, значит 7 удаляется, 7 = 7, значит 7 остаётся, 7 <> 8, значит 8 удаляется, 8 <> 3, значит 3 удаляется, 3 = 3, значит 3 остаётся.

Мой код:

Program lb_4;
Var i,n,s,j: integer ;
    f : boolean;
    a,b : array [1..1000] of integer;
Begin
  repeat
    writeln('Введите любое целое количество элементов');
    readln(n);
  if n <= 0 then
    writeln('n не может быть меньше или равно нулю');
  until n>0;
  for i := 1 to n do begin
    writeln('Введите i элемент:');
    readln(a[i]);
  end;
  writeln('Исходный массив:');
  for i := 1 to n do begin
  write(a[i]:2);
  end;
  b[1] := a[1];
  s := 1;
  for i := 1 to n do begin
      f := true;
      for j := 1 to s do
        if a[i] <> b[j] then 
          f := false;
      end;
      if f = true then begin
        s := s + 1;
        b[s] := a[i]
      end;
  writeln;
  writeln('Массив после удаления ');
  for i := 1 to s do
    write(b[i]:2); 
    writeln();
End.

Наверно надо проходить массив с конца, а не с начала.

for i := n downto 1 do

Да, спасибо. Теперь он не ищет все в элементы по массиву, но возникли другие проблемы, пойду разбираться)