#include <bits/stdc++.h>
using namespace std;
int dp[182], stone[102];
bool bridge[92];
inline int smallest(int l, int r) {
int minn = 2e9;
for (int i = l; i <= r; i++)
minn = min(minn, dp[i]);
return minn;
}
int main() {
int L, S, T, M, N, cnt = 0;
scanf("%d%d%d%d", &L, &S, &T, &M);
N = S * T;
for (int i = 0; i < M; i++)
scanf("%d", &stone[i]);
sort(stone, stone + M);
if (S == T) {
for (int i = 0; i < M; i++)
if (stone[i] % S == 0)
cnt++;
printf("%d\n", cnt);
return 0;
}
while (cnt < M) {
memset(bridge, 0, sizeof(bridge));
while (cnt < M)
bridge[stone[cnt++] % N] = 1;
for (int i = N; i < N + N; i++)
dp[i] = bridge[i - N] + smallest(i - T, i - S);
for (int i = N; i < N * 2; i++)
dp[i - N] = dp[i], dp[i] = 0;
}
printf("%d\n", dp[L % N]);
return 0;
}