#include <bits/stdc++.h>
std::multiset<int> x;
std::multiset<int>::iterator it;
int n;
int kutije[102];
bool Moze(int broj) {
  for (int i = 0; i < n; ++i) x.insert(kutije[i]);
  int brojac = 0;
  while (!x.empty()) {
    for (int i = 0; i < broj; ++i) {
      if (x.lower_bound(brojac) != x.end())
        x.erase(x.lower_bound(brojac));
      else if (x.empty())
        return true;
      else
        return false;
    }
    ++brojac;
  }
  return true;
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; ++i) scanf("%d", &kutije[i]);
  std::sort(kutije, kutije + n);
  for (int i = 1; i < 101; ++i) {
    x.clear();
    if (Moze(i)) {
      printf("%d", i);
      return 0;
    }
  }
}
