n = int(input()) # n = 모험가 인원수
adv_list = sorted(list(map(int,input().split())))[::-1]
cnt= 0
while True:
cnt += 1
max = adv_list[0] # 최대값 구하기
pop_list = adv_list[0:max] # 최대값-1만큼 더 고르기
adv_list = adv_list[max:] # 아직 안뽑힌 모험가만 남도록 업데이트
if len(adv_list)==0:
break
print(cnt)
공포도가 가장 높은 모험가부터 그룹화하기
공포도가 높은 애들은 높은 애들끼리, 낮은 애들은 낮은 애들끼리 묶기