주사위 쌓기

주사위 N개를 가장 적은 수의 탑으로 나눈다. 탑에서 위에서 i번째 주사위는 위에 놓인 주사위가 s_i개 이하여야 한다.

보통6그리디정렬배열이분 탐색면접 대비아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

아름이는 주사위 NN개를 가지고 있다. 주사위는 모두 크기가 같은 정육면체이고, 한 주사위의 여섯 면에는 같은 정수가 하나씩 쓰여 있다.

주사위 탑은 주사위의 변이 맞도록 위로 쌓아 올린 것이다. 주사위에 쓰여 있는 수가 ss이면 그 주사위 위에는 주사위를 최대 ss개까지 올려놓을 수 있다.

주사위가 4개이고 쓰여 있는 수가 1, 2, 4, 5인 경우를 보자. 위에서부터 2, 1, 4, 5 순서로 쌓는 것은 가능하다. 2가 적힌 주사위 위에 0개, 1이 적힌 주사위 위에 1개, 4가 적힌 주사위 위에 2개, 5가 적힌 주사위 위에 3개가 있기 때문이다. 반면 4, 1, 5, 2 순서로 쌓는 것은 불가능하다. 2가 적힌 주사위 위에 주사위가 3개 있기 때문이다.

주사위 NN개를 모두 쌓을 때 만들 수 있는 주사위 탑의 최소 개수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 주사위의 개수 NN(1N1,0001 \le N \le 1{,}000)이 주어진다. 둘째 줄에 주사위에 쓰여 있는 수 NN개가 공백으로 구분되어 주어진다. 각 수는 0 이상 1,000 이하의 정수이다.

출력

첫째 줄에 만들 수 있는 주사위 탑의 최소 개수를 출력한다.

힌트

주사위 kk개가 쌓여 있고 위에서부터 적힌 수가 s1,s2,,sks_1, s_2, \dots, s_k인 탑을 (s1,s2,,sk)(s_1, s_2, \dots, s_k)로 표현하자.

쓰여 있는 수가 1, 2, 4, 5인 주사위 4개는 (1,2,4,5)(1, 2, 4, 5)(2,1,4,5)(2, 1, 4, 5)처럼 탑 하나로 쌓을 수 있고, 다른 방법도 있다.

쓰여 있는 수가 1, 2, 1, 2인 주사위 4개로는 탑을 2개보다 적게 만들 수 없다. (1,2)(1, 2)(1,2)(1, 2)로 2개를 만들 수 있고, (1,1,2)(1, 1, 2)(2)(2)로 만드는 방법도 있다.

모든 주사위에 0이 적혀 있으면 어떤 주사위 위에도 다른 주사위를 올릴 수 없으므로 탑은 모두 주사위 한 개짜리이다.