#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;
}