#include <bits/stdc++.h>
using namespace std;

#define ll long long int
#define pll pair<ll, ll>
#define vl vector<ll>
#define vvl vector<vl>
#define pb push_back
#define pp pop_back
#define f(i, a, b) for (ll i = a; i < b; ++i)
#define fr(i, a, b) for (ll i = a; i >= b; --i)
#define print(x) cout << x << endl
#define endl '\n'
#define F first
#define S second
#define setbits(x) __builtin_popcountll(x)
#define zerobits(x) __builtin_ctzll(x)
#define to(n) to_string(n)
#define low(v, n) lower_bound(v.begin(), v.end(), n) - v.begin()
#define upp(v, n) upper_bound(v.begin(), v.end(), n) - v.begin()
#define mod 1000000007
#define mex 100005

ll exp(ll x, ll y)
{
  if (y == 0)
  {
    return 1;
  }
  if (y % 2 == 0)
  {
    return exp((x % mod) * (x % mod), y / 2) % mod;
  }
  else
  {
    return ((x % mod) * exp((x % mod) * (x % mod), y / 2) % mod);
  }
}

int main()
{
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);

  ll n, k, x;
  cin >> n >> k >> x;

  ll A[n];
  vector<ll> v;
  f(i, 0, n) { cin >> A[i]; }
  sort(A, A + n);

  f(i, 0, n - 1)
  {
    if (A[i + 1] - A[i] > x)
    {
      ll a = A[i + 1] - A[i];
      if (a % x)
      {
        v.pb(a / x);
      }
      else
      {
        v.pb(a / x - 1);
      }
    }
  }
  ll p = 0;
  ll a = 0;
  sort(v.begin(), v.end());
  f(i, 0, v.size())
  {
    a += v[i];
    if (a > k)
    {
      break;
    }
    p++;
  }
  p--;
  print(v.size() - p);
  return 0;
}