#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; typedef unsigned int ui; const ll mod = 1000000007; const ll INF = (ll)1000000007 * 1000000007; typedef pair P; #define stop char nyaa;cin>>nyaa; #define rep(i,n) for(int i=0;i=0;i--) #define Rep(i,sta,n) for(int i=sta;i=sta;i--) #define rep1(i,n) for(int i=1;i<=n;i++) #define per1(i,n) for(int i=n;i>=1;i--) #define Rep1(i,sta,n) for(int i=sta;i<=n;i++) typedef long double ld; const ld eps = 1e-8; const ld pi = acos(-1.0); typedef pair LP; int dx[4]={1,-1,0,0}; int dy[4]={0,0,1,-1}; templatebool chmax(T &a, const T &b) {if(abool chmin(T &a, const T &b) {if(b> n >> m >> p; rep(i,n){ ll b;cin >> b;int s=0; while(b%p==0){ s++; b/=p; } chmax(a[s],b); } rep(i,v+1) rep(j,MAX) dp[i][j]=0; dp[0][0]=1; rep(i,v){ //cout << i << " " << a[i] << endl; rep(j,MAX){ if(j>=i){ if(dp[i+1][j-i]*a[i]>m){ dp[i+1][j]=m+1; } else dp[i+1][j]=max(dp[i+1][j-i-1]*a[i],dp[i][j]); } else dp[i+1][j]=dp[i][j]; //cout << i+1 << " " << j << " " << dp[i+1][j] << endl; } } ll B=1; rep(i,v){ ll s=a[i];rep(j,i) s*=p; chmax(B,s); } //cout << B << endl; int ans=mod; rep(i,MAX){ //cout << i << " " << dp[v][i] << endl; if(dp[v][i]>m) chmin(ans,i); else if(dp[v][i]*B>m) chmin(ans,i+1); } if(ans