#include <bits/stdc++.h>
using namespace std;
bool Can(vector<int> v, int x) {
  for (int i = 0; i < ((int)(v).size()); i++)
    if (v[i] < i / x) return false;
  return true;
}
int main() {
  int n;
  scanf("%d", &n);
  vector<int> v(n);
  for (int i = 0; i < n; i++) scanf("%d", v.begin() + i);
  sort(v.begin(), v.end());
  int Upper = n;
  int Lower = 1;
  while (Lower != Upper) {
    int Mid = (Upper + Lower) / 2;
    if (Can(v, Mid))
      Upper = Mid;
    else
      Lower = Mid + 1;
  }
  printf("%d\n", Lower);
}
