#include <bits/stdc++.h>
const int INF = 0x7F7F7F7F;
const double EPS = 1e-10;
const long long mod7 = 1e9 + 7;
const long long mod9 = 1e9 + 9;
using namespace std;
inline long long rit() {
  long long f = 0, key = 1;
  char c;
  do {
    c = getchar();
    if (c == '-') key = -1;
  } while (c < '0' || c > '9');
  do {
    f = f * 10 + c - '0';
    c = getchar();
  } while (c >= '0' && c <= '9');
  return f * key;
}
inline void fprt(double f) { printf("%.08lf", f); }
void init() {}
const int Z = 105;
int n;
int a[Z], mk[Z];
void read() {
  n = rit();
  for (int i = 0; i < n; ++i) a[i] = rit();
  sort(a, a + n);
}
void solve() {
  int cnt = 0, c2 = 0, now;
  while (8 * 7 != 87) {
    cnt++;
    now = 0;
    for (int i = 0; i < n; ++i) {
      if (mk[i]) continue;
      if (a[i] >= now) {
        mk[i] = 1;
        c2++;
        now++;
        if (c2 == n) break;
      }
    }
    if (c2 == n) break;
  }
  cout << cnt << endl;
}
int main() {
  int nn = 1;
  while (nn--) {
    init(), read(), solve();
  }
  return 0;
}
