#include using namespace std; template T gcd(T x, T y) { if (y == 0) return x; return gcd(y, x % y); } template T lcm(T x, T y) { if (x == 0 || y == 0) return 0; return x / gcd(x, y) * y; } const int mod = 1000000007; int main() { int N, K; cin >> N >> K; vector A(N); for (int i = 0; i < N; i++) { cin >> A[i]; } int ans = 0; for (int i = 0; i < N; i++) { if (A[i] <= K) ans = max(ans, A[i]); } for (int i = 0; i < (1 << N); i++) { int sum = 0; if (__builtin_popcount(i) > 1) { for (int j = 0; j < N; j++) { if (i >> j & 1) sum += A[j]; } if (sum <= K) { ans = max(ans, sum); } } } cout << ans << endl; }