#include <bits/stdc++.h>
using namespace std;
#define ll long long int
#define v vector
#define pb push_back
#define pub pull_back
#define be begin
#define p pair<ll,ll>
#define f first
#define se second
#define um unordered_map
#define om map
#define us unordered_set
#define tr pair<ll,pair<long long int,long long int>> 
#define Q  queue
#define cp(v1,x,i,n) for(i=0;i<n;i++){v1[i]=x;}
#define lp(i,a,b) for(i=a;i<b;i++)
#define MAXN 1000000
#define pq priority_queue
void update(ll i,ll j,ll d,ll n,v<v<ll>> &v3)
{
  while(i>0)
  {
     
     ll k=j;
     while(k>0)
     {
       v3[i][k]+=d;
       k-=k&(-k);
     }
     i-=i&(-i);
  }
}
ll getsum(ll i,ll j,ll n,v<v<ll>> &v3)
{
  ll sum=0;
  while(i<=n)
  {
     ll k=j;
     while(k<=n)
     {
       sum+=v3[i][k];
       k+=k&(-k);
     }
     i+=i&(-i);
  }
  return sum;
}
bool mycmp(pair<v<ll>,ll> a,pair<v<ll>,ll> b)
{
  int c=0;
  for(int i=0;i<5;i++)
  {
    if(a.f[i]>b.f[i])
    c++;
  }
  return c>=3;
}
int main()
{
//  ios_base::sync_with_stdio(false);
//     cin.tie(NULL);
 
  ll t=1,pp=0;
  // cin>>t;
while(t--)
{
  ll n,j=0,b=0,sum1=0,sum2=0,mina=INT_MAX,maxa=0,e=0,h=0,g=0,x2=-1,y1,y2=-1,a=0,l=0,r,l1=0,r1=0,x1=0;
  ll sum=0,i=0,y=0,c=0;
  ll d=0;
  ll k=0,k1=0,k2=0,k3=0,k4=0;   
  ll m;
  ll w;    
  string s1,s2; 
  cin>>n>>k>>y;
  ll v1[n];
  for(i=0;i<n;i++)
   cin>>v1[i];
  sort(v1,v1+n);
  c=1;
  if(n==1)
    {
      cout<<"1\n";
      break;
    }
  ll v2[n-1];

  for(i=1;i<n;i++)
  {
    v2[i-1]=v1[i]-v1[i-1];
  }
  sort(v2,v2+n-1);
  k3=0;
  for(i=0;i<n-1;i++)
  {
    if(v2[i]%y==0&&v2[i])
      d=v2[i]/y-1;
    else 
      d=v2[i]/y;
        if(d<=k)
         k-=d;
        else 
        c++;
  }
    
  cout<<c<<"\n";
}
return 0;
}