#include #include #include #include #include #include #include using namespace std; typedef long long ll; int A[100]; int N; ll X; vector large, small; int th = 100000; set st, buf; int pre[3000000]; int idx[3000000]; map> idx_map; int main(){ ios::sync_with_stdio(false); cin.tie(0); cout << setprecision(10) << fixed; cin >> N >> X; for(int i = 0; i < N; i++){ cin >> A[i]; if(A[i] >= th) large.push_back(A[i]); else small.push_back(A[i]); idx_map[A[i]].push_back(i); } buf.insert(0); st.insert(0); sort(small.begin(), small.end()); for(int i = 0; i < small.size(); i++){ int m = small[i]; vector v; for(int n : buf){ st.insert(n+m); pre[n+m] = n; idx[n+m] = i; v.push_back(n+m); } for(int n : v){ buf.insert(n); } } int sz = large.size(); for(int i = 0; i < (1< used_idx; while(cur != 0){ int d = cur-pre[cur]; int sz = idx_map[d].size(); used_idx.insert(idx_map[d][sz-1]); idx_map[d].pop_back(); cur = pre[cur]; } for(int j = 0; j < sz; j++){ int m = 1<