def f(x): c = 0 while x % P == 0: c += 1 x //= P return (x, c) N, M, P, *A = map(int, open(0).read().split()) max_A = max(A) if max_A > M: print(1) exit() result = 10 ** 20 for m, c in map(f, A): if m == 1: continue t = 0 x = 1 while True: t += 1 if x * max_A > M: break t += c x *= m result = min(result, t) if result == 10 ** 20: print(-1) else: print(result)