#include<bits/stdc++.h>
#define int long long
#define INF 1000000000
const int N=1e4+10;
using namespace std;
struct node{
int d,z;
}b[N][100];
int n,a[N],len[N],m1,m2,Min=INF;
void Fen(int k,int n){
int j=0;
int le=sqrt(n);
for(int i=2;i<=le;i++){
if(n%i==0){
b[k][++j].d=i;
while(n%i==0){
b[k][j].z++;
n/=i;
}
}
}
if(n>1){
b[k][++j].d=n;
b[k][j].z=1;
}
len[k]=j;
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
// freopen("cell.in","r",stdin);
// freopen("cell.out","w",stdout);
cin>>n;
cin>>m1>>m2;
Fen(0,m1);
for(int i=1;i<=len[0];i++){
b[0][i].z*=m2;
}
for(int i=1;i<=n;i++){
cin>>a[i];
Fen(i,a[i]);
}
for(int i=1;i<=n;i++){
bool flag=1;
int max_time=-INF;
for(int j=1;j<=len[0];j++){
if(b[i][j].d!=b[0][j].d&&b[0][j].z!=0){
flag=0;
break;
}
}
if(flag){
for(int j=1;j<=len[i];j++){
int l=ceil(b[0][j].z*1.0/b[i][j].z);
max_time=max(max_time,l);
}
Min=min(Min,max_time);
}
}
if(Min==INF) cout<<-1;
else{
cout<<Min;
}
}
WA#7