#include<stdio.h>
long long b[10001],max=0,fama[10001];
int N,C;
void
dfs(long long cur,int index){
if(cur+b[index]<=max)
return ;
if(index==0)
return ;
if(cur>C)
return ;
max=cur<max?max:cur;
dfs(cur+fama[index],index-1);
dfs(cur,index-1);
}
int
main(){
int i;
scanf("%d %d",&N,&C);
i=1;
while(i<=N){
scanf("%lld ",fama+i);
if(fama[i]>C)
break;
b[i]=b[i-1]+fama[i];
i++;
}
dfs(0,i-1);
printf("%lld",max);
return 0;
}