program Quicksort;
{$R-,S-} 
{ vypni Range-Check a Stack-Check }

const
  MAX = 1000000;
type
  List = array[1..MAX] of longint;
var
  data: List;
  i,i1,prv,por,n: longint;

procedure quicksort(var A: List; left, right: longint);

procedure sort(l, r: longint);
var
  i, j, x, y: longint;
begin
  i := l; j := r; x := a[(l+r) div 2];
  repeat
    while a[i] < x do i := i + 1;
    while x < a[j] do j := j - 1;
    if i <= j then
    begin
      y := a[i]; a[i] := a[j]; a[j] := y;
      i := i + 1; j := j - 1;
    end;
  until i > j;
  if l < j then sort(l, j);
  if i < r then sort(i, r);
end;
begin {quicksort};
  sort(left,right);
end;

begin 
 
readln(n);
for i:=1 to n do begin
readln(prv);
if prv>i-data[i] then begin data[por+1]:=prv;
inc(por);
for i1:=i+1 to prv do 
inc(data[i1]);
end;
end;

  { triedime }
  quicksort(data, 1, por);
  for i := 1 to por do Writeln(data[i]);

end.
