#include <bits/stdc++.h>
using namespace std;
int N;
vector<int> V;
bool solve(int n);
int main() {
  ios_base::sync_with_stdio(false);
  int i, st, dr, mid;
  cin >> N;
  V.resize(N);
  for (i = 0; i < N; ++i) {
    cin >> V[i];
  }
  sort(V.begin(), V.end());
  st = 1;
  dr = N;
  while (st < dr) {
    mid = (st + dr) / 2;
    if (solve(mid)) {
      dr = mid;
    } else {
      st = mid + 1;
    }
  }
  cout << dr << '\n';
  return 0;
}
bool solve(int n) {
  int i, j, nr;
  vector<int> piles;
  piles.resize(n, 101);
  j = 0;
  for (i = N - 1; i >= 0; --i) {
    nr = 0;
    while (piles[j] == 0) {
      ++j;
      ++nr;
      if (j == n) j = 0;
      if (nr == n + 1) break;
    }
    if (nr == n + 1) break;
    piles[j] = min(piles[j] - 1, V[i]);
    ++j;
    if (j == n) j = 0;
  }
  if (i == -1) {
    return true;
  }
  return false;
}
