#include <iostream>
#include <algorithm>
using namespace std;
const int N(10009);
int f[N],stone[103];
bool mark[N]={false};
bool comp(const int &x,const int &y)
{
return x<y;
};
void solve(int l,int s,int t,int m,int &ans)
{
int p(s*t);
for(int i=1;i<=m+1;i++)
{
int t=stone[i]-stone[i-1];
if(t>p)
{
t-=p;
for(int j=i;j<=m+1;j++)
stone[j]-=t;
}
mark[stone[i]]=true;
}
mark[stone[m+1]]=false;
f[0]=0;
for(int i=1;i<=stone[m+1]+t-1;i++)
{
f[i]=109;
for(int j=i-s;j>=0&&j>=i-t;j--)
f[i]=min(f[i],f[j]);
if(mark[i])
f[i]++;
}
ans=109;
for(int i=0;i<t;i++)
ans=min(ans,f[i+stone[m+1]]);
}
int main()
{
int l,s,t,m,ans(0);
cin>>l>>s>>t>>m;
for(int i=1;i<=m;i++)
cin>>stone[i];
stone[m+1]=l;
sort(stone+1,stone+1+m,comp);
if(s==t)
{
for(int i=1;i<=m;i++)
if(stone[i]%s==0)
ans++;
}
else
solve(l,s,t,m,ans);
cout<<ans<<endl;
return 0;
}
/**************************************************************
Problem: 2257
User: admin
Language: C++
Result: Accepted
Time:42 ms
Memory:2128 kb
****************************************************************/