Code:
uses crt;
var a,l:array[0..100000000]of longint; n,i,j,t:longint;
begin
clrscr;
readln(n); a[0]:=high(longint);
for i:=1 to n do read(a[i]); readln;
for i:=1 to n do
for j:=i to n do
if a[i]<a[j] then begin t:=a[i]; a[i]:=a[j]; a[j]:=t; end;
for i:=n downto 0 do
for j:=i to n do if (l[i]<=l[j])and(a[i]>=l[j]) then begin l[i]:=l[j]+1; end;
writeln(l[0]-1);
readln
end.