#include<bits/stdc++.h>
using namespace std;
bool v[70005];
int prime[30005];
int cnt=0;
void ens()
{
v[0]=v[1]=0;
for(register int i=2;i<=30000;i++)
{
if(v[i]==1)
{
prime[++cnt]=i;//array prime starts at 1
for(register int j=i*i;j<=30000;j+=i)
{
v[j]=0;
}
}
}
}
int xbc=0,m1c=0;
int m1[30005];//zhishu
int m1f[30005];
int m1cnt=0;
int md,mz;
int n;
int fk[10005];//i am going to tell the man who create this problem some taboo
int ans=2147483647;
inline void fenjiem()
{
for(register int i=1;i<=cnt;i++)
{
if(md==1)break;
if(md%prime[i]==0)m1cnt++;
while(md%prime[i]==0)
{
md/=prime[i];
m1f[m1cnt]++;
m1[m1cnt]=prime[i];
}
}
}
inline int getx(int x,int p)//x%p==0
{
register int ct=0;
while(x%p==0)
{
x/=p;++ct;
}
return ct;
}
inline int fenjiex(int x)//fail:-1
{
int p=0;
for(register int i=1;i<=m1cnt;i++)
{
if(x%m1[i]!=0)return -1;
register int u=getx(x,m1[i]);
register int cna=ceil(m1f[i]/u);
if(cna>p)p=cna;
}
return p;
}
int main()
{
//freopen("cell.in","r",stdin);
//freopen("cell.out","w",stdout);
memset(m1f,0,sizeof(m1f));
memset(m1,0,sizeof(m1));
memset(v,1,sizeof(v));
ens();
cin>>n>>md>>mz;
for(int i=1;i<=n;i++)
{
cin>>fk[i];
}
fenjiem();
for(int i=1;i<=m1cnt;i++)
{
m1f[i]*=mz;
}
for(register int i=1;i<=n;i++)
{
register int d=fenjiex(fk[i]);
if(d!=-1)
{
if(ans>d)ans=d;
}
}
if(ans==2147483647)cout<<-1;
else cout<<ans;
return 0;
}