#include <bits/stdc++.h> using namespace std; const int N=105; int f[N];//从0跳到当前石头最少需要几次. int pos[N]; int main() { int l;scanf("%d",&l); int s,t,n;scanf("%d%d%d",&s,&t,&n);f[0]=0;pos[0]=0; for(int i=1;i<=n;i++) scanf("%d",&pos[i]);sort(pos+1,pos+1+n); for(int i=1;i<=n;i++) { int L=max(pos[i]-t,0);int R=max(pos[i]-s,0); for(int j=0;j<i;j++) { //if(i==2&&j==0) cout<<L<<' '<<R<<endl; if(pos[j]>=L&&pos[j]<=R) f[i]=min(f[i],f[j]+1); } }int ans=1e9;//cout<<f[4]<<' '<<pos[4]<<endl; for(int i=1;i<=n;i++) { if(pos[i]+t>=l) ans=min(ans,f[i]); }printf("%d\n",ans); return 0; }