#include #include #include #include #include #include #include #include #include using namespace std; using ll = long long; void chmin(ll& a, ll b) { a = min(a, b); } int main() { ll N;int M;ll A, B; cin >> N >> M >> A >> B; vector C(M); for (int i = 0;i < M;i++) cin >> C[i]; vector D; for (ll x = 1;x*x <= N;x++) { if (N%x != 0) continue; D.push_back(x); D.push_back(N/x); } sort(D.begin(),D.end()); D.erase(unique(D.begin(),D.end()), D.end()); int L = D.size(); ll inf = (1LL << 60); vector dp(L, inf); dp[0] = 0; for (int i = 0;i < L;i++) { if (dp[i] == inf) continue; ll now = D[i]; ll mn = inf; for (auto t : C) { if (t%now == 0) mn = min(mn, t); } for (int j = i+1;j < L;j++) { ll nx = D[j]; if (nx%now != 0) continue; if (mn <= nx) continue; ll c = nx / now; ll cst = (A * (c - 1)) + (i == 0 ? 0 : B); chmin(dp[j], dp[i] + cst); } } cout << (dp.back() == inf ? -1 : dp.back()) << endl; }