#include <bits/stdc++.h>
using namespace std;
int mop[100000];
void chek(string str) {
  for (int i = 0; i < str.size() / 2; i++) {
    if (str[i] != str[str.size() - 1 - i])
      mop[i] = 1, mop[str.size() - 1 - i] = 1;
  }
}
int ch(string str) {
  for (int i = 0; i < str.size() / 2; i++) {
    if (str[i] != str[str.size() - 1 - i]) return 0;
  }
  return 1;
}
int main() {
  int n, c = 0;
  cin >> n;
  int arr[n], check[n];
  memset(check, 0, sizeof check);
  for (int i = 0; i < n; i++) cin >> arr[i];
  sort(arr, arr + n);
  for (int i = 0; i < n; i++) {
    int ch = 0, nn = 0;
    for (int j = 0; j < n; j++)
      if (!check[j] && arr[j] >= nn) ch = 1, check[j] = 1, nn++;
    if (ch) c++;
  }
  cout << c << endl;
  return 0;
}
