def divisor(n): ans = [] for i in range(1, int(n**0.5)+1): if n % i == 0: ans.append(i) if i*i != n: ans.append(n//i) return ans INF = 1<<60 N, M, A, B = map(int, input().split()) C = sorted(map(int, input().split())) div = sorted(divisor(N)) L = len(div) dp = [INF]*L dp[0] = 0 for i in range(L-1): idx = 0 NG = False for j in range(i+1, L): while idx < M and C[idx] <= div[j]: if div[i] <= C[idx] and C[idx]%div[i] == 0: NG = True idx += 1 if NG: break if div[j]%div[i] != 0: continue dp[j] = min(dp[j], dp[i]+A*(div[j]//div[i]-1)+B) print(dp[-1]-B if dp[-1] != INF else -1)