#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define maxn 10010
#define inf 1000000000
int f[maxn];
int a[110];

int cmp(const void * a, const void * b) {
return ((*(int*)a) - (*(int*)b));
}

int main()
{
    int L,S,T,M;
    scanf("%d%d%d%d",&L,&S,&T,&M);
    memset(f,0,sizeof(f));
    memset(a,0,sizeof(a));
    for(int i = 1;i <= M; i++)scanf("%d",&a[i]);
    if(S==T) {
        int ans = 0;
        for(int i = 1;i <= M; i++) {
            ans += !(a[i]%S);
        }
        printf("%d\n",ans);
        return 0;
    }
    qsort(a+1,M,sizeof(int),cmp);
    int p = 0;
    if(a[1]>100) f[p=100]=1;
    else f[p=a[1]]=1;
    for(int i = 2;i <= M; i++) {
        if(a[i]-a[i-1]>100)f[p=p+100]=1;
        else f[p=p+a[i]-a[i-1]]=1;
    }
    if(L-a[M]>100)p=p+100;
    else p=p+L-a[M];
    for(int i = 1;i <= p; i++) {
        int b = inf;
        for(int j = S;j<=T;j++) {
            if(i-j>=0)b=b>f[i-j]?f[i-j]:b;
        }
        if(b!=inf)f[i]+=b;
        else f[i]=inf;
    }
    int ans = inf;
    for(int i = p-T;i<=p;i++)ans = ans>f[i]?f[i]:ans;
    printf("%d\n",ans);
    return 0;
}
/**************************************************************
	Problem: 2257
	User: admin
	Language: C
	Result: Accepted
	Time:49 ms
	Memory:1184 kb
****************************************************************/