#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
****************************************************************/