#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; long long m1[100] = {}; int main() { long long n, m, p; cin >> n >> m >> p; long long m2 = 0; for (int i = 0; i < n; i++) { long long a; cin >> a; long long co = 0; m2 = max(m2, a); while (a % p == 0) { a /= p; co++; } m1[co] = max(m1[co], a); } long long dp[4040] = {}; dp[0] = 1; for (int i = 0; i < 4000; i++) { if (dp[i] * m2 > m) { cout << i+1 << endl; return 0; } for (int j = 0; j < 100; j++) { if (m1[j] == 0 || i + j + 1 > 4000) { continue; } dp[i + j + 1] = max(dp[i + j + 1], dp[i] * m1[j]); } } cout << "-1" << endl; return 0; }