#include <bits/stdc++.h>
using namespace std;
int fa[105], cnt[105];
int findset(int x) {
  if (fa[x] == x)
    return x;
  else
    return fa[x] = findset(fa[x]);
}
void unionset(int x, int y) {
  int fx = findset(x), fy = findset(y);
  if (fx != fy) {
    fa[fy] = fx;
    cnt[fx] += cnt[fy];
  }
}
int main() {
  int n, x[105];
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%d", &x[i]);
  sort(x + 1, x + n + 1);
  for (int i = 0; i <= n; i++) fa[i] = i;
  for (int i = 1; i <= n; i++) cnt[i] = 1;
  for (int i = 1; i <= n; i++) {
    int fi = findset(i), num = cnt[fi];
    for (int j = i + 1; j <= n; j++) {
      if (fa[j] != j) continue;
      if (num > x[j]) continue;
      unionset(i, j);
      break;
    }
  }
  int ans = 0;
  for (int i = 1; i <= n; i++) {
    if (findset(i) == i) ans++;
  }
  printf("%d\n", ans);
  return 0;
}
