#include <bits/stdc++.h>
using namespace std;
int dirx[4] = {-1, 0, 1, 0};
int diry[4] = {0, 1, 0, -1};
int main() {
  int n;
  scanf("%d", &n);
  map<int, int> mp;
  vector<int> arr(n);
  for (int i = 0; i < n; i++) {
    scanf("%d", &arr[i]);
    mp[arr[i]]++;
  }
  sort(arr.begin(), arr.end());
  int piles = 0;
  int cnt = 0;
  while (cnt < n) {
    piles++;
    int pilec = 0;
    for (int i = 0; i < n;) {
      if (pilec == 0 && mp[arr[i]] != 0) {
        pilec++;
        mp[arr[i]]--;
        cnt++;
      } else if (arr[i] >= pilec && mp[arr[i]] != 0) {
        pilec++;
        mp[arr[i]]--;
        cnt++;
      } else
        i++;
    }
  }
  cout << piles;
  return 0;
}
