#include<bits/stdc++.h>
using namespace std;
map<int,int>my2;
map<int,int>x2;
int xb=0,my[1010];
int n,m1,m2,ma,ans=114514,fl,cnt;
void zyz(int n,bool ff){
fl=0;
for(int i=2;i*i<=n;i++){
if(n%i==0){
n/=i;
if(ff==1){
if(my2[i]==0)my[++xb]=i;
my2[i]+=m2;
}
else{
x2[i]+=1;
}
fl=1;
i=1;
}
}
if(fl==0){
if(ff==1){
my[++xb]=n;
my2[n]+=m2;
}
else{
x2[n]+=1;
}
}
}
int main(){
cin>>n>>m1>>m2;
zyz(m1,1);
for(int i=1;i<=n;i++){
cin>>cnt;
x2.clear();
zyz(cnt,0);
ma=-1;
for(int j=1;j<=xb;j++){
if(x2[my[j]]==0){
ma=114514;
break;
}
else{
ma=max(ma,(my2[my[j]]-1)/x2[my[j]]+1);
}
}
if(ma==114514)continue;
else ans=min(ma,ans);
}
if(ans==114514)cout<<"-1";
else cout<<ans;
return 0;
}