{
TASK:psort
LANG:pascal
}
var a:array[0..50000] of longint;
    ot,bool:array[0..50000] of longint;
    f:array[0..50000,1..2] of longint;
    max:longint;
    poz1:longint;
     br,i,n:longint;
begin
   readln(n);
   poz1:=-1;
   for i:=1 to n do
      begin
         read(a[i]);
         bool[a[i]]:=i;
      end;
   f[a[1],1]:=1;
   f[a[1],2]:=a[1];
   for i:=2 to n do
      if a[i]=a[i-1]+1 then
         begin
            inc(f[f[a[i-1],2],1]);
            f[a[i],2]:=f[a[i-1],2];
         end
      else
         begin
            f[a[i],1]:=1;
            f[a[i],2]:=a[i];
         end;
      max:=1;
   for i:=1 to bool[1]-1 do ot[a[i]]:=1;
   for i:=bool[1]+1 to n do
      if max>a[i] then ot[a[i]]:=1
      else
         begin
            ot[a[i]]:=0;
            max:=a[i];
         end;
   br:=0;
   i:=f[1,1];
   repeat
      inc(i);
      if (f[i,1]=1) then br:=br+ot[i]
      else
         begin
            if f[i,1]>i then
               begin
                  br:=i;
                  i:=i+f[i,1]-1;
               end
            else
               begin
                  br:=br+f[i,1];
                  i:=i+f[i,1]-1;
               end;
         end;
   until i >=n;
   writeln(br);
end.


