#include<iostream>
//#include<cmath>
#include<cstring>
using namespace std;
const int N=1e6+5;
int n;
int m1,m2;
int q[N],c[N];
int q2[N],c2[N];
int mx;
int cr=0;
int fj(int n){
int k=n;
for(int i=2;i*i<=n;i++){
//cout<<i<<endl;
if(n%i==0){
//cout<<i<<endl;
mx=max(mx,i);
q[i]=1;
while(k%i==0){
c[i]++;
k/=i;
}
}
}
if(k>1){
q[k]=1;
c[k]++;
mx=k;
}
}
int main(){
cin>>n;
cin>>m1>>m2;
//cout<<m1<<endl;
if(m1==1){
cout<<0;
return 0;
}
fj(m1);
for(int i=1;i<=m1;i++){
c[i]*=m2;
}
for(int i=2;i<=mx;i++){
//cout<<c[i]<<endl;
}
memcpy(c2,c,sizeof(c));
memcpy(q2,q,sizeof(q));
int ans=1e9;
memset(c,0,sizeof(c));
for(int i=1;i<=n;i++){
int s;
cin>>s;
fj(s);
int y=1;
//cout<<mx<<endl;
while(1){
y++;
//cout<<mx<<endl;
for(int i=2;i<=mx;i++){
c[i]=c[i]/(y-1)*(y);
//cout<<c[i]<<" ";
}
int flag=1;
for(int i=1;i<=mx;i++){
if(c[i]<c2[i]) flag=0;
}
if(y>mx) break;
//cout<<y<<endl;
if(flag){
ans=min(ans,y);
break;
}
}
}
if(ans>99999999) cout<<"-1"<<endl;
else cout<<ans<<endl;
return 0;
}