#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^3 dinero
int n, k;
int a[1000 + 10];
int dp[1000 + 10][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
if(dp[pos][gastado] == -1) {
int tomar = f(pos + 1, gastado + a[pos]);
int no_tomar = f(pos + 1, gastado);
dp[pos][gastado] = max(tomar, no_tomar);
}
return dp[pos][gastado];
}
int main() {
clr(dp, -1);
cin >> n >> k;
for(int i = 0; i < n; i++)
cin >> a[i];
cout << f(0, 0) << "\n";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgY2xyKGEsIGgpIG1lbXNldChhLCAoaCksIHNpemVvZihhKSkKCi8vMSA8PSBuIDw9IDEwMDAgY2FudGlkYWQgZGUgcHJvZHVjdG9zCi8vMSA8PSBhaSA8PSAxMDAwIHByZWNpbyBkZSBjYWRhIHByb2R1Y3RvCi8vMSA8PSBrIDw9IDEwXjMgZGluZXJvCgppbnQgbiwgazsKaW50IGFbMTAwMCArIDEwXTsKaW50IGRwWzEwMDAgKyAxMF1bMTAwMCArIDEwXTsKCmxsIGYoaW50IHBvcywgaW50IGdhc3RhZG8pIHsgLy8oMDw9cG9zPG4pICgwPD1nYXN0YWRvPD1rKSAKICAgIGlmKGdhc3RhZG8gPiBrKSByZXR1cm4gMDsKICAgIGlmKHBvcyA9PSBuKSByZXR1cm4gZ2FzdGFkbzsgLy9zaSB5YSBhY2FiZSBsb3MgcHJvZHVjdG9zLCByZXRvcm5vIGxvIGdhc3RhZG8KICAgIAogICAgaWYoZHBbcG9zXVtnYXN0YWRvXSA9PSAtMSkgewogICAgICAgIGludCB0b21hciA9IGYocG9zICsgMSwgZ2FzdGFkbyArIGFbcG9zXSk7CiAgICAgICAgaW50IG5vX3RvbWFyID0gZihwb3MgKyAxLCBnYXN0YWRvKTsKICAgICAgICBkcFtwb3NdW2dhc3RhZG9dID0gIG1heCh0b21hciwgbm9fdG9tYXIpOwogICAgfQoKICAgIHJldHVybiBkcFtwb3NdW2dhc3RhZG9dOwp9CgppbnQgbWFpbigpIHsKICAgIGNscihkcCwgLTEpOwoJY2luID4+IG4gPj4gazsKCWZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspCgkgICAgY2luID4+IGFbaV07Cgljb3V0IDw8IGYoMCwgMCkgPDwgIlxuIjsKICAgIHJldHVybiAwOwp9Cg==