#include<bits/stdc++.h>
using namespace std;
#define int long long
unordered_map<int,int> m;
unordered_map<int,int> mp;
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;
mp.clear();
int s,ans=0;
cin>>s;
for(int i=2;i<=s/i;i++){
while(s%i==0){
mp[i]++;
s/=i;
}
}
for(auto qw:m){
int sd=qw.first;
int as=qw.second;
if(as!=0){
if(m[sd]==0){
pd=1;
break;
}
}
}
if(pd){
continue;
}
for(auto qw:mp){
int ys=qw.first;
int gs=qw.second;
if(gs!=0&&m[ys]!=0){
if(m[ys]>gs){
ans=max(ans,(m[ys]-1)/gs);
}
}
}
minn=min(ans,minn);
}
if(minn==2100000000){
cout<<-1;
}
else{
cout<<minn;
}
return 0;
}