#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
const int N1(30009),N2(20);
int M[N1]={0},m[N2]={0},num[N2]={0};
void trans(int x,int k)
{
int t(x);
for(int i=2;i<=t;i++)
while(x%i==0)
{
x/=i;
M[i]++;
}
if(x==t)
M[x]++;
for(int i=1;i<=t;i++)
if(M[i])
{
m[0]++;num[0]++;
m[m[0]]=i;
num[num[0]]=M[i];
num[num[0]]*=k;
}
}
int main()
{
int n,m1,m2,x,ans(0x7ffffff);
cin>>n>>m1>>m2;
if(m1==1)
{
cout<<0<<endl;
return 0;
}
trans(m1,m2);bool find(false);
for(int p=1;p<=n;p++)
{
cin>>x;
int t(0),i;
for(i=1;i<=m[0];i++)
{
int t2(num[i]);
if(x%m[i]==0)
{
for(int j=2;j<=num[i]+1;j++)
{
int q=(int)pow((double)m[i],(double)j);
if(x%q)
{
t2=(int)ceil(num[i]/((j-1)*1.0));
break;
}
}
}
else
break;
t=max(t,t2);
}
if(i>m[0])
{
ans=min(ans,t);
find=true;
}
}
if(find==false)
cout<<-1;
else cout<<ans;
cout<<endl;
return 0;
}
/**************************************************************
Problem: 2286
User: admin
Language: C++
Result: Accepted
Time:83 ms
Memory:2444 kb
****************************************************************/