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