#================================================ from functools import lru_cache import sys input=sys.stdin.readline N,M,P=map(int,input().split()) A=list(set(map(int,input().split()))) D={} for a in A: m=1 while a%P==0: a//=P m+=1 if a>1: if a in D: D[a]=min(m,D[a]) else: D[a]=m if not D: print(-1) exit(0) inf=float("inf") @lru_cache(maxsize=10**6) def f(x): if x>M: return 0 g=inf for a,m in D.items(): g=min(g,f(x*a)+m) return g print(f(1))