n, k, x, y = map(int, input().split()) a_list = list(map(int, input().split())) x_mod = x % k y_mod = y % k initial_pair = tuple(sorted((x_mod, y_mod))) current_dp = {initial_pair: 0} a_mod = [a % k for a in a_list] for c in a_mod: next_dp = {} for (a_prev, b_prev), score in current_dp.items(): sum_ab = (a_prev + b_prev) % k current_point = 1 if (sum_ab + c) % k == 0 else 0 new_score = score + current_point # Discard a_prev: new pair is (b_prev, c) new_pair = tuple(sorted((b_prev, c))) if new_pair in next_dp: if next_dp[new_pair] < new_score: next_dp[new_pair] = new_score else: next_dp[new_pair] = new_score # Discard b_prev: new pair is (a_prev, c) new_pair = tuple(sorted((a_prev, c))) if new_pair in next_dp: if next_dp[new_pair] < new_score: next_dp[new_pair] = new_score else: next_dp[new_pair] = new_score # Discard c: keep the previous pair (a_prev, b_prev) new_pair = (a_prev, b_prev) if new_pair in next_dp: if next_dp[new_pair] < new_score: next_dp[new_pair] = new_score else: next_dp[new_pair] = new_score current_dp = next_dp if current_dp: print(max(current_dp.values())) else: print(0)