## https://yukicoder.me/problems/no/944

import heapq

def main():
    N, M, P = map(int, input().split())
    A = list(map(int, input().split()))

    A.sort(reverse=True)
    p_array = []
    for i in range(N):
        a = A[i]
        p_cnt = 0
        while a % P == 0:
            a //= P
            p_cnt += 1
        p_array.append((a, p_cnt))

    answer = float("inf")
    for a, p_cnt in p_array:
        ans = 0
        x = 1
        is_ok = True
        while x * A[0] <= M:
            if a > 1:
                x *= a
                ans += p_cnt + 1
            else:
                is_ok = False
                break
        if is_ok:
            answer = min(ans + 1, answer)


    if answer == float("inf"):
        print(-1)
    else:
        print(answer)

    


    



if __name__ == "__main__":
    main()