#include <bits/stdc++.h>
using namespace std;
const int inf = 1 << 30;
int n, m1, m2, p[30050], ans = inf;
vector <pair <int, int>> v;
void calc(int x, int y) {
memset(p, 0, sizeof(p));
for (int i = 2; i * i <= x; i++)
while (!(x % i))
p[i] += y, x /= i;
if (x > 1 && x <= 30000) p[x] += y;
}
int check() {
int m = 0;
for (auto i : v) {
if (!p[i.first]) return inf;
else m = max(m, (i.second - 1) / p[i.first] + 1);
}
return m;
}
int main() {
scanf("%d%d%d", &n, &m1, &m2);
calc(m1, m2);
for (int i = 2; i <= 30000; i++)
if (p[i])
v.push_back({i, p[i]});
for (int i = 1; i <= n; i++) {
int x;
scanf("%d", &x);
calc(x, 1);
ans = min(ans, check());
}
printf("%d", ans == inf ? -1 : ans);
return 0;
}