#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<map>
using namespace std;
struct node{
long long l[301],sum;
map<int,int> p;
}data[30001],mdata;
long long n,m1,m2,a[10001],ans1=2147483647;
node divide(long long x,long long b){
long long m=0;
node ans;
for(long long i=2;i<=sqrt(x);i++){
if(x%i==0){
ans.l[++m]=i;
while(x%i==0)x/=i,ans.p[i]++;
ans.p[i]*=b;
}
if(x==1)break;
}if(x>1)ans.p[x]=b,ans.l[++m]=x;
ans.sum=m;
return ans;
}
int main(){
memset(data,0,sizeof(data));
cin>>n>>m1>>m2;
if(m1*m2==1){
cout<<0;
return 0;
}mdata=divide(m1,m2);
for(long long i=1;i<=n;i++){
cin>>a[i],data[i]=divide(a[i],1);
long long aa=0;
for(long long j=1;j<=mdata.sum;j++){
if(data[i].p[mdata.l[j]]==0)break;
int tt=mdata.p[mdata.l[j]]-data[i].p[mdata.l[j]];
long long tmp=max(0,tt);
aa=max(aa,tmp);
}if(aa!=0)ans1=min(aa,ans1);
}cout<<(ans1!=2147483647?ans1+1:-1);
}
只过了1,3,6,7这4组