def main(): import sys input = sys.stdin.read().split() idx = 0 N = int(input[idx]); idx +=1 K = int(input[idx]); idx +=1 X = int(input[idx]); idx +=1 Y = int(input[idx]); idx +=1 A = list(map(int, input[idx:idx+N])) X_mod = X % K Y_mod = Y % K if X_mod > Y_mod: X_mod, Y_mod = Y_mod, X_mod active = {(X_mod, Y_mod): 0} for a in A: c = a % K new_active = {} for (u, v), points in active.items(): sum_three = (u + v + c) % K new_points = points + (1 if sum_three == 0 else 0) # Discard u new_u = min(v, c) new_v = max(v, c) key = (new_u, new_v) if key in new_active: if new_points > new_active[key]: new_active[key] = new_points else: new_active[key] = new_points # Discard v new_u = min(u, c) new_v = max(u, c) key = (new_u, new_v) if key in new_active: if new_points > new_active[key]: new_active[key] = new_points else: new_active[key] = new_points # Discard c key = (u, v) if key in new_active: if new_points > new_active[key]: new_active[key] = new_points else: new_active[key] = new_points active = new_active if not active: print(0) else: print(max(active.values())) if __name__ == "__main__": main()