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