#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define clr(a, h) memset(a, (h), sizeof(a))
//1 <= n <= 1000 cantidad de productos
//1 <= ai <= 1000 precio de cada producto
//1 <= k <= 10^6 dinero
int n, k;
int a[1000 + 10];
ll f(int pos, int gastado) { //(0<=pos<n) (0<=gastado<=k)
if(gastado > k) return 0;
if(pos == n) return gastado; //si ya acabe los productos, retorno lo gastado
int tomar = f(pos + 1, gastado + a[pos]);
int no_tomar = f(pos + 1, gastado);
return max(tomar, no_tomar);
}
int main() {
cin >> n >> k;
for(int i = 0; i < n; i++)
cin >> a[i];
cout << f(0, 0) << "\n";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgY2xyKGEsIGgpIG1lbXNldChhLCAoaCksIHNpemVvZihhKSkKCi8vMSA8PSBuIDw9IDEwMDAgY2FudGlkYWQgZGUgcHJvZHVjdG9zCi8vMSA8PSBhaSA8PSAxMDAwIHByZWNpbyBkZSBjYWRhIHByb2R1Y3RvCi8vMSA8PSBrIDw9IDEwXjYgZGluZXJvCgppbnQgbiwgazsKaW50IGFbMTAwMCArIDEwXTsKCmxsIGYoaW50IHBvcywgaW50IGdhc3RhZG8pIHsgLy8oMDw9cG9zPG4pICgwPD1nYXN0YWRvPD1rKSAKICAgIGlmKGdhc3RhZG8gPiBrKSByZXR1cm4gMDsKICAgIGlmKHBvcyA9PSBuKSByZXR1cm4gZ2FzdGFkbzsgLy9zaSB5YSBhY2FiZSBsb3MgcHJvZHVjdG9zLCByZXRvcm5vIGxvIGdhc3RhZG8KICAgIAogICAgaW50IHRvbWFyID0gZihwb3MgKyAxLCBnYXN0YWRvICsgYVtwb3NdKTsKICAgIGludCBub190b21hciA9IGYocG9zICsgMSwgZ2FzdGFkbyk7CiAgICAKICAgIHJldHVybiBtYXgodG9tYXIsIG5vX3RvbWFyKTsKfQoKaW50IG1haW4oKSB7CgljaW4gPj4gbiA+PiBrOwoJZm9yKGludCBpID0gMDsgaSA8IG47IGkrKykKCSAgICBjaW4gPj4gYVtpXTsKCWNvdXQgPDwgZigwLCAwKSA8PCAiXG4iOwogICAgcmV0dXJuIDA7Cn0K