#include <bits/stdc++.h>
using namespace std;
int main() {
int n, m, k;
cin >> n >> m >> k;
vector<int> a(n);
for(int i = 0; i < n; ++i) {
cin >> a[i];
}
sort(a.begin(), a.end());
reverse(a.begin(), a.end());
long long tinggi = m;
int efektif = 0;
for(int i = 0; i < n; ++i) {
tinggi += k;
// cek apakah ada di a yang nilainya lebih dari tinggi
while(a.size() > 0 && a.back() <= tinggi) {
// tidak mungkin bisa efektif dibuang
a.pop_back();
}
if(a.size() == 0) {
// tidak ada yg efektif -> berhenti
break;
}
// ada yg memenuhi syarat > tinggi
tinggi = max(tinggi, (long long)a.back());
a.pop_back();
++efektif;
}
cout << efektif << endl;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBtYWluKCkgewogIGludCBuLCBtLCBrOwogIGNpbiA+PiBuID4+IG0gPj4gazsKICB2ZWN0b3I8aW50PiBhKG4pOwogIGZvcihpbnQgaSA9IDA7IGkgPCBuOyArK2kpIHsKICAgIGNpbiA+PiBhW2ldOwogIH0KICBzb3J0KGEuYmVnaW4oKSwgYS5lbmQoKSk7CiAgcmV2ZXJzZShhLmJlZ2luKCksIGEuZW5kKCkpOwogIGxvbmcgbG9uZyB0aW5nZ2kgPSBtOwogIGludCBlZmVrdGlmID0gMDsKICBmb3IoaW50IGkgPSAwOyBpIDwgbjsgKytpKSB7CiAgICB0aW5nZ2kgKz0gazsKICAgIC8vIGNlayBhcGFrYWggYWRhIGRpIGEgeWFuZyBuaWxhaW55YSBsZWJpaCBkYXJpIHRpbmdnaQogICAgd2hpbGUoYS5zaXplKCkgPiAwICYmIGEuYmFjaygpIDw9IHRpbmdnaSkgewogICAgICAvLyB0aWRhayBtdW5na2luIGJpc2EgZWZla3RpZiBkaWJ1YW5nCiAgICAgIGEucG9wX2JhY2soKTsKICAgIH0KICAgIGlmKGEuc2l6ZSgpID09IDApIHsKICAgICAgLy8gdGlkYWsgYWRhIHlnIGVmZWt0aWYgLT4gYmVyaGVudGkKICAgICAgYnJlYWs7CiAgICB9CiAgICAvLyBhZGEgeWcgbWVtZW51aGkgc3lhcmF0ID4gdGluZ2dpCiAgICB0aW5nZ2kgPSBtYXgodGluZ2dpLCAobG9uZyBsb25nKWEuYmFjaygpKTsKICAgIGEucG9wX2JhY2soKTsKICAgICsrZWZla3RpZjsKICB9CiAgY291dCA8PCBlZmVrdGlmIDw8IGVuZGw7Cn0=