#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define _CRT_SECURE_NO_WARNINGS #define rep(i, n) for(int i=0; i<(n); i++) #define FOR(i, m, n) for(int i=(m);i<(n);i++) #define SZ(x) ((int)(x).size()) #define all(x) (x).begin(),(x).end() #define SORT(x) sort((x).begin(),(x).end()) #define REVE(x) reverse((x).begin(),(x).end()) #define mp make_pair #define pb push_back typedef vector VI; typedef vector VS; typedef vector> VVI; typedef pair PII; typedef long long LL; int main() { int n, k; cin >> n >> k; VI a(n); rep(i, n)cin >> a[i]; int ans = 0; for (int i = 0; i < (1 << n); i++) { int sum = 0; bool flag = false; rep(j, n) { if (i&(1 << j))sum += a[j]; if (sum > k) { flag = true; break; } } if (flag)continue; if (ans < sum&&sum <= k)ans = sum; if (ans == k)break; } cout << ans << endl; }