/*
*************************************************************************
* $ Author : honeyslawyer $
* $ Name : shashank gupta $
*************************************************************************
*
* Copyright 2013 @ honeyslawyer and shashank gupta
*
************************************************************************/
#include<cstdio>
#include<iostream>
#include<cmath>
//#include<conio.h>
#include<cstring>
#include<ctype.h>
#include<algorithm>
#include<vector>
#include<stdlib.h>
#include<map>
#include<queue>
#include<stack>
#include<set>
#include<string>
#include<climits>
#define mod 1000000007
#define ll long long
using namespace std;
ll gcd(ll a,ll b) {if(b==0) return a; return gcd(b,a%b);}
ll power(ll b,ll exp,ll m)
{ll ans=1;
b%=m;
while(exp)
{if(exp&1)
ans=(ans*b)%m;
exp>>=1;
b=(b*b)%m;
}
return ans;
}
int b[200],arr[200];
int main()
{
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&b[i]);
arr[b[i]]++;
}
int ans=0;
for(int i=0;i<=100;i++)
{
int size=0;
if(arr[i]>0)
{
ans++;
arr[i]--;
size++;
for(int j=size;j<=100;j++)
{
if(arr[j]>0)
{
//printf("%d\n",j);
arr[j]--;
size++;
j=size-1;
}
}
}
if(arr[i]>0)
i--;
}
printf("%d\n",ans);
//getch();
return 0;
/*checklist
1)getch() and conio.h removed.*/
}
LyoKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqICQgQXV0aG9yIDogaG9uZXlzbGF3eWVyICAgJAoqICQgTmFtZSAgIDogc2hhc2hhbmsgZ3VwdGEgJAoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCioKKiBDb3B5cmlnaHQgMjAxMyBAIGhvbmV5c2xhd3llciBhbmQgc2hhc2hhbmsgZ3VwdGEKKgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNpbmNsdWRlPGNzdGRpbz4KI2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPGNtYXRoPgovLyNpbmNsdWRlPGNvbmlvLmg+CiNpbmNsdWRlPGNzdHJpbmc+CiNpbmNsdWRlPGN0eXBlLmg+CiNpbmNsdWRlPGFsZ29yaXRobT4KI2luY2x1ZGU8dmVjdG9yPgojaW5jbHVkZTxzdGRsaWIuaD4KI2luY2x1ZGU8bWFwPgojaW5jbHVkZTxxdWV1ZT4KI2luY2x1ZGU8c3RhY2s+CiNpbmNsdWRlPHNldD4KI2luY2x1ZGU8c3RyaW5nPgojaW5jbHVkZTxjbGltaXRzPgoKI2RlZmluZSBtb2QgMTAwMDAwMDAwNwojZGVmaW5lIGxsIGxvbmcgbG9uZwoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKbGwgZ2NkKGxsIGEsbGwgYikge2lmKGI9PTApIHJldHVybiBhOyByZXR1cm4gZ2NkKGIsYSViKTt9CgpsbCBwb3dlcihsbCBiLGxsIGV4cCxsbCBtKQoge2xsIGFucz0xOwogIGIlPW07CiAgd2hpbGUoZXhwKQogICB7aWYoZXhwJjEpCiAgICAgYW5zPShhbnMqYiklbTsKICAgIGV4cD4+PTE7CgliPShiKmIpJW07CiAgIH0KICByZXR1cm4gYW5zOwogfQppbnQgYlsyMDBdLGFyclsyMDBdOwppbnQgbWFpbigpCnsKICBpbnQgbjsKICBzY2FuZigiJWQiLCZuKTsKICBmb3IoaW50IGk9MDtpPG47aSsrKQogIHsKICBzY2FuZigiJWQiLCZiW2ldKTsKICBhcnJbYltpXV0rKzsKfQogIGludCBhbnM9MDsKICAgIGZvcihpbnQgaT0wO2k8PTEwMDtpKyspCiAgewogICAgICBpbnQgc2l6ZT0wOwogICAgICBpZihhcnJbaV0+MCkKICAgICAgewogICAgICAgICAgICBhbnMrKzsKICAgICAgICAgICAgYXJyW2ldLS07CiAgICAgICAgICAgIHNpemUrKzsKICAgICAgICAgZm9yKGludCBqPXNpemU7ajw9MTAwO2orKykKICAgICAgICAgewogICAgICAgICAgICAgICAgaWYoYXJyW2pdPjApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgLy9wcmludGYoIiVkXG4iLGopOwogICAgICAgICAgICAgICAgICAgIGFycltqXS0tOwogICAgICAgICAgICAgICAgICAgIHNpemUrKzsKICAgICAgICAgICAgICAgICAgICBqPXNpemUtMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZihhcnJbaV0+MCkKICAgICAgICBpLS07CiAgICB9CiBwcmludGYoIiVkXG4iLGFucyk7CgovL2dldGNoKCk7CnJldHVybiAwOwovKmNoZWNrbGlzdAoxKWdldGNoKCkgYW5kIGNvbmlvLmggcmVtb3ZlZC4qLwp9Cg==