#include <bits/stdc++.h>
// #include <ext/pb_ds/assoc_container.hpp>
// #include <ext/pb_ds/tree_policy.hpp>
// using namespace __gnu_pbds;
// #define ordered_set tree< int ,  null_type ,  less<int> ,  rb_tree_tag ,  tree_order_statistics_node_update>
// find_by_order returns iterator to  element present at that index...
// order_of_key returns no. of elements having value strictly less than that given in the order_of_key();
#warning !!!check the size of arrayss!!!
// NUMERIC DEFINITIONS :

#define MOD  1000000007
#define newMOD  998244353
#define pi 3.1415926535897932384626433832795
#define ld long double
#define ll long long
#define int long long
#define INF 1000000000000000008
#define Need_for_speed(activated) ios_base :: sync_with_stdio(0);cin.tie(NULL);cout.tie(NULL)
#define satisfy ll t; cin>> t; while(t--)
#define mp make_pair
#define pb push_back
#define vi vector<int>
#define x first
#define y second
#define endl "\n"
#define pii pair<ll,ll>
#define input freopen("input.txt", "r", stdin),freopen("output.txt", "w", stdout)
#define time        cerr << "\nTime elapsed: " << 1000 * clock() / CLOCKS_PER_SEC << "ms\n";
using namespace std;
ll gcd(ll a, ll b){if (b == 0)return a;return gcd(b, a % b);}
ll power(int x, unsigned int y, unsigned int m){ if (y == 0) return 1;int p = power(x, y/2, m) % m;  p = (p * p) % m;return (y%2 == 0)? p : (x * p) % m;}
ll modInverse(int a, int m){{ return power(a, m-2, m);}}

//ll fact[lim] = {0};
//ll inv[lim];
//void facto(ll modd) {
//
//    fact[0] = 1; fact[1] = 1;
//
//    for(int i = 2; i < lim; i++){fact[i] = (fact[i-1]*i)%modd;}
//    inv[lim-1] = modInverse(fact[lim-1],modd);
//    for(ll i=lim-2;i>=0;i--)
//        inv[i]=(inv[i+1]*(i+1))%modd;
//
//}



void __print(int x) { cerr << x; }
void __print(float x) { cerr << x; }
void __print(double x) { cerr << x; }
void __print(long double x) { cerr << x; }
void __print(char x) { cerr << '\'' << x << '\''; }
void __print(const char *x) { cerr << '\"' << x << '\"'; }
void __print(const string &x) { cerr << '\"' << x << '\"'; }
void __print(bool x) { cerr << (x ? "true" : "false"); }

template <typename T, typename V>
void __print(const pair<T, V> &x)
{
    cerr << '{';
    __print(x.first);
    cerr << ',';
    __print(x.second);
    cerr << '}';
}
template <typename T>
void __print(const T &x)
{
    int f = 0;
    cerr << '{';
    for (auto &i : x)
        cerr << (f++ ? "," : ""), __print(i);
    cerr << "}";
}
void _print() { cerr << "]\n"; }
template <typename T, typename... V>
void _print(T t, V... v)
{
    __print(t);
    if (sizeof...(v))
        cerr << ", ";
    _print(v...);
}
#ifndef ONLINE_JUDGE
#define see(x...)                 \
cerr << "[" << #x << "] = ["; \
_print(x)
#else
#define see(x...)
#endif
const ll lim = 1e5;
ll arrr[lim];
//ll sub(ll x, ll y) {
//    return (x - y + MOD) % MOD;
//}
//ll mul(ll x, ll y) {
//    return (x * y) % MOD;
//}
//ll add(ll x, ll y) {
//    return (x + y) % MOD;
//}

//ll ncr(ll n, ll r,ll modd)
//{
//    if(r>n)return 0;
//    ll res = 1;
//    res = fact[n];
//    res*=inv[r];
//    res%=modd;
//    res*=inv[n-r];
//    res%=modd;
////    res*=modInverse(fact[r],modd);
////    res%=modd
////    res*=modInverse(fact[n-r],modd);
//    return res;
//}

//***************************  REASON EVERY LINE OF CODE ***************************
//***************************  REASON EVERY LINE OF CODE ***************************
//***************************  REASON EVERY LINE OF CODE ***************************


void solve()
{

    ll n,k,x;
    cin>>n>>k>>x;
    ll a[n];
    for(ll i=0;i<n;i++)
    {
        cin>>a[i];
    }
    sort(a,a+n);
    multiset<ll > ms;
    for(ll i=1;i<n;i++)
    {
        if(a[i]-a[i-1]>x)
        {
           ll z = (a[i]-a[i - 1]-1)/x;
            ms.insert(z);
        }
    }
    while (ms.size())
    {
        auto it = *ms.begin();
        if(it>k)
        {break;}
        k-=it;
        ms.erase(ms.begin());
    }
    cout<<ms.size()+1<<endl;

}
signed main()
{
    Need_for_speed(activated);
    //never give up ,irrespective of rating increment/decrement !!!!
    //Clear the global DATA strucrures!!!
    //read question statement carefully...
    
//    satisfy
//    {
//        solve();
//    }
    
        solve();
    
    return 0;
}
