#define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define rep(i,p,n) for(int i=(int)p;i<(int)n;i++) #define repp(i,p,n) for(int i=(int)p;i>=(int)n;i--) #define Sort(x) sort(x.begin(),x.end()) #define PSort(x) sort(begin(x), end(x), pairCompare) #define ll long long #define INF 2000000000 #define pb push_back #define mp make_pair #define fi first #define se second #define PI 3.14159265358979 int dx[4] = { -1,0,1,0 }, dy[4] = { 0,1,0,-1 }; using namespace std; vector v; int n,k,ans=0; void dfs(int sum,int index) { if(sum+v[index]<=k)ans = max(ans, sum+v[index]); if (index + 1 < n) { dfs(sum, index + 1); if(sum+v[index]<=k)dfs(sum + v[index], index + 1); } return; } int main(){ cin >> n >> k; v.resize(n); rep(i, 0, n) { cin >> v[i]; } dfs(0, 0); cout << ans << endl; return 0; }