#include <bits/stdc++.h>
#define MOD 1000000007
#define Tran_Hoan_Thien ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL)
#define fi first
#define se second
#define pb push_back
#define vi vector<int>
#define ll long long
#define vll vector<ll>
#define db double
#define pii pair<int,int>
#define endl "\n"
#define str string
#define pk pop_back
#define LB lower_bound
#define UB upper_bound
#define all(a) a.begin(),a.end()
#define sz(a) int((a).size())
#define rv(a) a.rbegin(),a.rend()
using namespace std;
ll gcd(ll a,ll b){return __gcd(a,b);}
ll lcm(ll a,ll b){return a/gcd(a,b)*b;}
int main(){
#define TASK ""
if(fopen(TASK ".inp", "r")){
freopen(TASK ".inp", "r", stdin);
freopen(TASK ".out", "w", stdout);
}
freopen("Tile.inp", "r", stdin);
freopen("Tile.out", "w", stdout);
Tran_Hoan_Thien;
int n;cin>>n;
vector<int> a(n);
for(int &x:a) cin>>x;
sort(a.begin(),a.end(),greater<int> ());
int dem=1;
int k=a[0];
for(int i=1;i<n;i++){
if(k<=0) break;
dem++;
k=min(k-1,a[i]);
}
cout<<dem;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgTU9EIDEwMDAwMDAwMDcKI2RlZmluZSBUcmFuX0hvYW5fVGhpZW4gaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBjaW4udGllKE5VTEwpOyBjb3V0LnRpZShOVUxMKQojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgdmkgdmVjdG9yPGludD4KI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSB2bGwgdmVjdG9yPGxsPgojZGVmaW5lIGRiIGRvdWJsZQojZGVmaW5lIHBpaSBwYWlyPGludCxpbnQ+CiNkZWZpbmUgZW5kbCAiXG4iCiNkZWZpbmUgc3RyICBzdHJpbmcKI2RlZmluZSBwayAgcG9wX2JhY2sKI2RlZmluZSBMQiAgbG93ZXJfYm91bmQKI2RlZmluZSBVQiAgdXBwZXJfYm91bmQKI2RlZmluZSBhbGwoYSkgYS5iZWdpbigpLGEuZW5kKCkKI2RlZmluZSBzeihhKSBpbnQoKGEpLnNpemUoKSkKI2RlZmluZSBydihhKSAgICBhLnJiZWdpbigpLGEucmVuZCgpCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmxsIGdjZChsbCBhLGxsIGIpe3JldHVybiBfX2djZChhLGIpO30gCmxsIGxjbShsbCBhLGxsIGIpe3JldHVybiBhL2djZChhLGIpKmI7fQppbnQgbWFpbigpewogICAgI2RlZmluZSBUQVNLICIiCiAgICBpZihmb3BlbihUQVNLICIuaW5wIiwgInIiKSl7CiAgICAgICAgZnJlb3BlbihUQVNLICIuaW5wIiwgInIiLCBzdGRpbik7CiAgICAgICAgZnJlb3BlbihUQVNLICIub3V0IiwgInciLCBzdGRvdXQpOwogICAgfQogICAgZnJlb3BlbigiVGlsZS5pbnAiLCAiciIsIHN0ZGluKTsKICAgIGZyZW9wZW4oIlRpbGUub3V0IiwgInciLCBzdGRvdXQpOyAKICAgIFRyYW5fSG9hbl9UaGllbjsKICAgIGludCBuO2Npbj4+bjsKICAgIHZlY3RvcjxpbnQ+IGEobik7CiAgICBmb3IoaW50ICZ4OmEpIGNpbj4+eDsKICAgIHNvcnQoYS5iZWdpbigpLGEuZW5kKCksZ3JlYXRlcjxpbnQ+ICgpKTsKICAgIGludCBkZW09MTsKICAgIGludCBrPWFbMF07CiAgICBmb3IoaW50IGk9MTtpPG47aSsrKXsKICAgICAgICBpZihrPD0wKSBicmVhazsKICAgICAgICBkZW0rKzsKICAgICAgICBrPW1pbihrLTEsYVtpXSk7CiAgICB9CiAgICBjb3V0PDxkZW07CiAgICByZXR1cm4gMDsgIAp9Cg==