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)