RT
#include<bits/stdc++.h>
using namespace std;
inline int read(){
int x=0;bool flag=false;char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-') flag=true;
ch=getchar();
}
while(ch>='0'&&ch<='9') x=(x<<3)+(x<<1)+(ch^48),ch=getchar();
return flag?-x:x;
}
const int N=30005;
int n,m1,m2,fm[N],fs[N],s,tmp,ans=INT_MAX;
int main(){
n=read(),m1=read(),m2=read(),tmp=m1;
for(int i=2;i*i<=tmp;++i){
if(m1%i) continue;
while(!(m1%i)) m1/=i,++fm[i];
}
if(m1!=1) ++fm[m1];
m1=tmp;
for(int i=1;i<=n;++i) fm[i]*=m2;
while(n--){
s=read();
int thans=-1;
bool flag=false;
for(int i=2;i*i<=s;++i){
if(!fm[i]) continue;
int co=s,sumt=0;
while(!(co%i)) ++sumt,co/=i;
if(sumt==0){flag=true;break;}
int ci=0,sum=0;
while(sum<fm[i]) sum+=sumt,++ci;
thans=max(ci,thans);
}
if(flag) continue;
ans=min(ans,thans);
}
cout<<ans;
return 0;
}
//300