# 入力を整数に変換して受け取る import sys sys.setrecursionlimit(10 ** 6)#pypy3はnumpyを使えない,この行を消すこと. # 入力を整数に変換して受け取る def II(): return int(sys.stdin.readline()) # 入力全てを整数に変換したものの配列を受け取る def LI(): return list(map(int, sys.stdin.readline().split())) # 入力の文字列を1文字ずつに分けたものの配列を受け取る def LC(): return list(input()) # 入力の数字列を1桁ずつに分けたものの配列を受け取る def IC():return [int(c) for c in input()] #少ない1行のint変数に入れる様の入力.例:N, A, B = map(int, input().split()) def MI(): return map(int, input().split()) def solve(): N,M,P = MI() A = LI() MinOpe = -1 import math from math import ceil, floor for i in range(N): A_tmp = A[i] if(A[i] >= M): print(1) exit() Multmp = 0 while(A_tmp%P == 0): A_tmp = A_tmp//P Multmp +=1 if(A_tmp<=1): continue Ope = floor(math.log(M, A_tmp)) if(MinOpe == -1): MinOpe = Ope*(Multmp+1)+1 else: if(MinOpe > Ope*(Multmp+1)+1): MinOpe = Ope*(Multmp+1)+1 print(MinOpe) return solve()