#include #include #include #include #include #include #include #include #include #include #include using namespace std; using ll = long long; int main() { int N;ll L;cin >> N >> L; vector W(N); for (int i =0 ;i < N;i++) cin >> W[i]; int w = W[0]; ll inf = (1LL << 60); vector dist(w, inf); dist[0] = 0; priority_queue, vector>, greater> > pq; pq.push({0, 0}); while (!pq.empty()) { auto tp = pq.top(); ll d = tp.first; int v = tp.second; pq.pop(); if (dist[v] < d) continue; for (int t = 0;t < N;t++) { int nv = (v + W[t]) % w; ll ncst = dist[v] + W[t]; if (ncst < dist[nv]) { dist[nv] = ncst; pq.push({ncst, nv}); } } } ll res = 0; for (int k = 0;k < w;k++) { //1 <= k+(wx) <= L if (dist[k] > L) continue; ll t = (L - dist[k]) / w; if (dist[k] == 0) { res += t; } else { res +=t + 1; } } cout << res << endl; }