#include #include #include using namespace atcoder; using mint = modint998244353; using namespace std; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf 1000000000000000000 int main() { long long N,M,A,B; cin>>N>>M>>A>>B; vector c(M); rep(i,M)cin>>c[i]; vector y; for(long long i=1;i*i<=N;i++){ if(N%i==0){ y.push_back(i); if(i*i!=N){ y.push_back(N/i); } } } sort(y.begin(),y.end()); vector dp(y.size(),Inf); dp[0] = 0; rep(i,y.size()){ if(dp[i]==Inf)continue; long long ng = Inf; rep(j,M){ if(c[j]%y[i]==0 && c[j]>=y[i])ng = min(ng,c[j]); } //cout<= ng)break; if(y[j] % y[i] != 0)continue; long long nv = dp[i]; nv += (y[j] / y[i] - 1) * A + B; dp[j] = min(dp[j],nv); } } long long ans = dp.back(); if(ans==Inf)ans = -1; else ans -= B; cout<