#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e2 + 10;
int dp[maxn];
int n;
int a[maxn];
int mp[maxn];
int mo[maxn];
int v(int u) {
  int res = 0;
  for (int i = u; i < maxn; i++) {
    res += mo[i];
  }
  return res;
}
void of(int k, int f) {
  for (int i = k; i < maxn && f > 0; i++) {
    if (mo[i] > 0) {
      if (mo[i] < f) {
        f -= mo[i];
        mo[i] = 0;
      } else {
        mo[i] -= f;
        f = 0;
      }
    }
  }
  return;
}
bool ok(int h) {
  int o = n / h;
  fill(mo, mo + maxn, 0);
  if (n % h != 0) {
    o++;
  }
  for (int i = 0; i < maxn; i++) {
    mo[i] = mp[i];
  }
  for (int i = 0; i < o; i++) {
    if (i != o - 1) {
      if (v(i) < h) {
        return 0;
      }
      of(i, h);
    } else {
      if (n % h == 0) {
        if (v(i) < h) {
          return 0;
        }
        of(i, h);
      } else {
        if (v(i) < (int)n % h) {
          return 0;
        }
        of(i, h);
      }
    }
  }
  return 1;
}
int main() {
  ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> a[i];
    mp[a[i]]++;
  }
  for (int i = 1; i <= n; i++) {
    if (ok(i)) {
      cout << i;
      return 0;
    }
  }
  return 0;
}
