import sys input=sys.stdin.readline N,M,P=map(int,input().split()) A=set(map(int,input().split())) A=list(A) Max=max(A) T={} for b in A: a=b m=1 while b%P==0: b//=P if b>1 and (b not in T or T[b]>m): T[b]=m if (not T) and Max<=M: print(-1) exit(0) Memo={} def f(x): if x in Memo: return Memo[x] elif x>M: return 0 elif x*Max>M: return 1 X=float("inf") for b in T: X=min(X,f(x*b)+m) Memo[x]=X return X print(f(1))