n,m,p = gets.to_s.split.map{ |v| v.to_i } a = gets.to_s.split.map{ |v| v.to_i } b = a.map do |v| x = v while x >= p && x % p == 0 x /= p end x end am = a.max bm = b.max if am < m && bm == 1 puts -1 exit end ans = 0 x = 1 while x <= m ans += 1 if x * am <= m x *= bm else x *= am end end puts ans