def main1(n,m,p,a): if any([x>m for x in a]):return 1 bd=m mxvary=[-1]*31 for x in a: bd=min(bd,(m+1+x-1)//x) cnt=0 while x%p==0: cnt+=1 x//=p mxvary[cnt]=max(mxvary[cnt],x) if all([abs(x)==1 for x in mxvary]):return -1 ans=float('inf') for i in range(31): if abs(mxvary[i])==1:continue mxv=mxvary[i] tmp=0 now=1 while now<=bd: now*=mxv tmp+=i+1 if now>m: ans=min(ans,tmp) else: ans=min(ans,tmp+1) return ans if __name__=='__main__': n,m,p=map(int,input().split()) a=list(map(int,input().split())) ret1=main1(n,m,p,a) print(ret1)