rt
#include <bits/stdc++.h>
using namespace std;
const int N=1e4+5;
int n,m1,m2,s[N],cnt1[3*N],cnt2[3*N];
vector<int> t;
void init(){ //对 m1 质因数分解
for(int i=2;i<=m1;i++){
if(m1%i==0) t.push_back(i);
while(m1%i==0){
m1/=i;
cnt1[i]++; //统计m1的质因数数量
}
cnt1[i]*=m2;
}
}
bool check(int x){ //判断s[i]的质因数集合里是否包含m1的质因数集合
memset(cnt2,0,sizeof cnt2);
for(int i=0;i<t.size();i++){
if(x%t[i]!=0) return false;
while(x%t[i]==0){
x/=t[i];
cnt2[t[i]]++;
}
}
return true;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n>>m1>>m2;
init();
for(int i=1;i<=n;i++) cin>>s[i];
int minn=2e9;
for(int i=1;i<=n;i++){
if(!check(s[i])) continue; //没有可能作为答案
//计算需要的分裂次数
int maxx=-1;
for(int j=0;j<t.size();j++){
//计算cnt1[p[j]]变成cnt2[p[j]]所需的次数的max值
int a=cnt1[t[j]],b=cnt2[t[j]];
maxx=max(maxx,(a+b-1)/b);
}
minn=min(minn,maxx);
}
if(minn==2e9) cout<<-1;
else cout<<minn;
return 0;
}
巨佬们%%%