#include <bits/stdc++.h>
 
#define ll long long
#define sz(x) ((int) (x).size())
#define all(x) (x).begin(), (x).end()
#define vi vector<int>
#define vl vector<long long>
#define pii pair<int, int>
#define pll pair<ll,ll>
#define REP(i,a) for (int i = 0; i < (a); i++)
#define add push_back
using namespace std;
template<typename T>
using minpq = priority_queue<T, vector<T>, greater<T>>;
 
const ll MOD = 1000000007LL;
//const ll MOD = 998244353LL;



int ni() {
    int x; cin >> x;
    return x;
}
 
ll nl() {
    ll x; cin >> x;
    return x;
}
 
double nd() {
    double x; cin >> x;
    return x;
}
 
string next() {
    string x; cin >> x;
    return x;
}

int main() {
#ifndef ONLINE_JUDGE
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
#endif
    ios::sync_with_stdio(false);
    cin.tie(0);

    int N = ni();
    ll K = nl();
    ll X = nl();

    vl A(N);
    REP(i,N) {
        A[i] = nl();
    }
    sort(all(A));

    vl extra;
    REP(i,N-1) {
        ll d = A[i+1]-A[i];
        ll e = max(0LL,(d-1)/X);
        extra.add(e);
    }
    sort(all(extra));

    int ans = N;
    for (ll e: extra) {
        if (e <= K) {
            K -= e;
            ans--;
        } else {
            break;
        }
    }
    cout << ans;
}