#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <cmath>
using namespace std;
int main() {
    int n;
    long long k, x;
    cin >> n >> k >> x;
    vector<long long> a(n);
    for (int i = 0; i < n; ++i) {
        cin >> a[i];
    }
    sort(a.begin(), a.end());
    priority_queue<long long> p;

    for (int i = 1; i < n; ++i) {
        if (a[i] - a[i-1] > x) {
            p.push(-(a[i] - a[i-1]));
        }
    }

    long long j = k;
    while (!p.empty()) {
        long long gap = - p.top();
        j -= (long long )ceil((double)gap / x) - 1;

        if (j < 0) {
            break;
        }
        p.pop();
    }
    cout << p.size() + 1;
}
