#include using namespace std; const long long INF = 1E18 + 7; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int n, m, a, b; cin >> n >> m >> a >> b; vector c(m); for (int i = 0; i < m; i++) { cin >> c[i]; } vector div; for (int i = 1; i * i <= n; i++) { if (n % i == 0) { div.push_back(i); if (n / i != i) { div.push_back(n / i); } } } sort(div.begin(), div.end()); int d = div.size(); vector dst(d, INF); long long ans = INF; dst[0] = 0; for (int i = 0; i < d; i++) { int max_div = n + 1; for (int v : c) { if (v % div[i] == 0) { max_div = min(max_div, v); } } if (max_div > n) { ans = min(ans, dst[i] + 1LL * (n / div[i] - 1) * a); } for (int j = i + 1; j < d; j++) { if (div[j] < max_div && div[j] % div[i] == 0) { dst[j] = min(dst[j], dst[i] + b + 1LL * (div[j] / div[i] - 1) * a); } } } cout << (ans == INF ? -1 : ans); }