#include<bits/stdc++.h>
using namespace std;
unordered_map<int,int> m;
void fj(int x,int y){
for(int i=2;i<=x/i;i++){
while(x%i==0){
m[i]++;
x/=i;
}
m[i]*=y;
}
if(x!=1){
m[x]+=y;
}
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n;
cin>>n;
int m1,m2;
cin>>m1>>m2;
if(m2==0||(m1==1&&m2==1)){
cout<<0;
return 0;
}
fj(m1,m2);
int minn=2100000000;
while(n--){
bool pd=0;
int s,ans=0;
cin>>s;
for(int i=2;i<=s/i;i++){
int sum=0;
while(s%i==0){
sum++;
s/=i;
}
if(sum!=0&&m[i]==0){
pd=1;
break;
}
if(sum!=0&&m[i]!=0){
if(sum%m[i]==0){
ans=max(ans,0);
}
else{
ans=max(ans,(m[i]-1)/sum+1);
}
}
}
if(s!=1){
if(m[s]==0){
continue;
}
ans=max(ans,m[s]);
}
if(pd){
continue;
}
minn=min(minn,ans);
}
if(minn==2100000000){
cout<<-1;
}
else{
cout<<minn;
}
return 0;
}