(type=namespace)P说:额,这不关我质数领域的事
#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
namespace P/*PRIME*/
{
typedef long long ll;
ll f(ll a,ll b)
{
ll ans=1;
for(int i=1;i<=b;i++)
ans*=a;
return ans;
}
bool p[30005];
int plist[30005],pcnt;
int needp[30005][3250];
void setp()
{
std::memset(p,true,sizeof(p));
p[0]=p[1]=false;
for(int i=2;i<=30000;i++)
if(p[i])
{
plist[pcnt]++;
for(int j=2;i*j<=30000;j++)
p[i*j]=false;
}
for(int i=1;i<=pcnt;i++)
for(int j=1;j<=std::log2(30000)&&f(plist[i],j)<=30000;j++)
for(int k=1;f(i,j)*k<=30000;k++)
needp[f(i,j)*k][i]=j;
}
};//质数领域
int n,s[10005],m1,m2,need[3250],t[10005],minn=2147483647,mink=-1;
int main()
{
cin>>n>>m1>>m2;
for(int i=1;i<=n;i++)
scanf("%d",s+i);
P::setp();
for(int i=1;i<=P::pcnt;i++)
need[i]=P::needp[m1][i]*m2;
for(int i=1;i<=n;i++)
for(int j=1;j<=P::pcnt;j++)
if(need[j])
t[i]=max(t[i],(P::needp[s[i]][j]==0)?2147483647:int(ceil(need[j]*1.0/P::needp[s[i]][j])));
for(int i=1;i<=n;i++)
if(t[i]<minn)
{
minn=t[i];
mink=i;
}
if(minn==2147483647) cout<<-1;
else cout<<minn;
return 0;
}