#include <bits/stdc++.h>
using namespace std;
int N, S[105];
bool feasible(int pile) {
  priority_queue<int> pq;
  for (int i = 0; i < pile; ++i) pq.push(S[N - i - 1]);
  for (int i = N - pile - 1; i >= 0; --i) {
    int lim = pq.top();
    pq.pop();
    if (lim <= 0) return false;
    pq.push(min(lim - 1, S[i]));
  }
  return true;
}
int main() {
  cin >> N;
  for (int i = 0; i < N; ++i) cin >> S[i];
  sort(S, S + N);
  int left = 1, right = N;
  int ans;
  while (left <= right) {
    int piles = (left + right) >> 1;
    if (feasible(piles)) {
      ans = piles;
      right = piles - 1;
    } else {
      left = piles + 1;
    }
  }
  cout << ans << endl;
  return 0;
}
