#include // #include using namespace std; // using namespace atcoder; using lint = long long; #define endl '\n' lint const mod = 1e9+7; //long const mod = 998244353; mapdp; lint maxx; lint n,m,p; lint a[200000]; vector>pa(200000); lint search(lint x){ if(x >= maxx)return 1; if(dp[x] != 0)return dp[x]; lint tmp = 0; for(int i=0;i 1){ tmp = max(tmp, search(x * pa[i][0]) + pa[i][1]); } } return dp[x] = tmp; } int main(){ cin >> n >> m >> p; for(int i=0;i> a[i]; sort(a,a+n); maxx = ((m+1)/a[n-1]); while(maxx * a[n-1] <= m)maxx++; for(int i=0;i 1)chk = true; } if(!chk){ cout << -1 << endl; return 0; } cout << search(1) << endl; }