#include #include #include #include using u32 = unsigned int; using u64 = unsigned long long int; int main(){ u32 n; u64 l; std::cin >> n >> l; std::vector w; for(u32 i = 0; i < n; i++){ u32 x; std::cin >> x; w.push_back(x); } std::sort(w.begin(), w.end()); std::priority_queue, std::vector >, std::greater<> > q; std::vector dist(w[0], l+1); dist[0] = 0; q.emplace(0, 0); while(!q.empty()){ auto [d, v] = q.top(); q.pop(); if(d != dist[v]) continue; for(u32 i = 1; i < n; i++){ u32 u = (v + w[i]) % w[0]; if(d + w[i] < dist[u]){ dist[u] = d + w[i]; q.emplace(dist[u], u); } } } u64 ans = l / w[0]; for(u32 i = 1; i < w[0]; i++){ if(dist[i] == l+1) continue; ans += 1 + (l - dist[i]) / w[0]; } std::cout << ans << std::endl; return 0; }