program cell;
var
i,n,m1,m2,t,p,q,time,ans:longint;
a:array[1..200,1..2]of longint;
procedure fj(m:longint);
var
s,i:longint;
begin
s:=2;
while m>1 do
begin
if m mod s=0 then
begin
inc(p);
a[p,1]:=s;
end;
while m mod s=0 do
begin
m:=m div s;
inc(a[p,2]);
end;
inc(s);
end;
for i:=1 to p do
a[i,2]:=a[i,2]*m2;
end;
procedure work(t:longint);
var
i,now:longint;
begin
time:=-1;
for i:=1 to p do
begin
q:=0;
if t mod a[i,1]<>0 then
begin
time:=maxlongint;
exit;
end;
while t mod a[i,1]=0 do
begin
t:=t div a[i,1];
inc(q);
end;
if q>=a[i,2] then now:=0
else if a[i,2]mod q=0 then now:=a[i,2] div q
else now:=a[i,2] div q+1;
if now>time then time:=now;
end;
end;
begin
readln(n);
readln(m1,m2);
if m1=1 then
begin
writeln(0);
exit;
end;
ans:=maxlongint;
fj(m1);
for i:=1 to n do
begin
read(t);
work(t);
if time<ans then ans:=time;
end;
if ans=maxlongint then writeln(-1)
else writeln(ans);
end.
/**************************************************************
Problem: 2286
User: admin
Language: Pascal
Result: Wrong Answer
****************************************************************/