// nongdanjohn - THPTNguyen-Quang-Dieu
const maxN = 100001;
var N: longint;
    A: array[1..maxN] of longint;
    Link,Head: array[1..maxN] of longint;
    Free: array[1..maxN] of boolean;

Procedure Enter;
var i: longint;
begin
    Readln(N);
    For i:=1 to N do Read(A[i]);
    For i:=N downto 1 do
      if Free[A[i]] then
        begin
          Head[A[i]]:=i;
          Link[i]:=i;
          Free[A[i]]:=False;
        end else
        begin
          link[i]:=head[A[i]];
          Head[A[i]]:=i;
        end;
end;

Procedure Sort(L,H: longint);
var i,j,k,t: longint;
begin
    i:=l; j:=h; k:=A[(l+h) div 2];
    repeat
      while A[i]<k do inc(i);
      while A[j]>k do dec(j);
      if i<=j then
        begin
          t:=A[i]; A[i]:=A[j]; A[j]:=t;
          inc(i); dec(j);
        end;
    until i>j;
    if l<j then sort(l,j);
    if i<h then sort(i,h);
end;

procedure solve;
var i,j,res: longint;
begin
    Fillchar(Free, sizeof(Free), true);
    res:=0;
    for i:=1 to n do
      begin
        j:=head[A[i]];
        if Free[j] then
          begin
            inc(res);
            Free[j]:=False; Free[j+1]:=False; Free[j-1]:=False;
          end;
        head[A[i]]:=Link[j];
      end;
    Writeln(Res);
end;

Begin
    Assign(Input,''); Reset(Input);
    Enter;
    Sort(1,n);
    solve;
End.