import sys from collections import deque def main(): N, M, P = map(int, sys.stdin.readline().split()) A = list(map(int, sys.stdin.readline().split())) max_r = -1 best_e = 0 for a in A: e = 0 tmp = a while tmp % P == 0: e += 1 tmp = tmp // P r = tmp if r > max_r: max_r = r best_e = e visited = set() queue = deque() queue.append( (1, 0) ) while queue: x, ops = queue.popleft() if x > M: print(ops) return if x in visited: print(-1) return visited.add(x) if x % P == 0: k = 0 tmp = x while tmp % P == 0: k += 1 tmp = tmp // P x_final = tmp new_ops = ops + k if x_final > M: print(new_ops) return if x_final not in visited: queue.append( (x_final, new_ops) ) else: x_new = x * max_r new_ops = ops + 1 + best_e if x_new > M: print(new_ops) return if x_new not in visited: queue.append( (x_new, new_ops) ) print(-1) if __name__ == "__main__": main()