#include <iostream>
using namespace std;
int main ()
{
    int n,w,a[1000],i=0,j=0,max=0,k;
    bool f=true;
    unsigned long long s;
    cin>>n>>w;
    while(n>i)
    {
              cin>>a[i];
              s=s+a[i];
              i++;
              }
    i=0;
    if(s<=w)cout<<s<<endl;
    else if(n==1)cout<<a[0]<<endl;
    else if(n==2)
    {
         if(a[0]>max&&a[0]<=w)max=a[0];
         if(a[1]>max&&a[1]<=w)max=a[1];
         if(a[0]+a[1]>max&&a[0]+a[1]<=w)max=a[0]+a[1];
         cout<<max<<endl;
         }
    else if(n==3)
    {
         if(a[0]>max&&a[0]<=w)max=a[0];
         if(a[1]>max&&a[1]<=w)max=a[1];
         if(a[2]>max&&a[2]<=w)max=a[2];
         if(a[0]+a[1]>max&&a[0]+a[1]<=w)max=a[0]+a[1];
         if(a[0]+a[2]>max&&a[0]+a[2]<=w)max=a[0]+a[2];
         if(a[1]+a[2]>max&&a[1]+a[2]<=w)max=a[1]+a[2];
         if(a[0]+a[1]+a[2]>max&&a[0]+a[1]+a[2]<=w)max=a[0]+a[1]+a[2];
         cout<<max<<endl;
         }
    else if(n==4)
    {
         if(a[0]>max&&a[0]<=w)max=a[0];
         if(a[1]>max&&a[1]<=w)max=a[1];
         if(a[2]>max&&a[2]<=w)max=a[2];
         if(a[3]>max&&a[3]<=w)max=a[3];
         if(a[0]+a[1]>max&&a[0]+a[1]<=w)max=a[0]+a[1];
         if(a[0]+a[2]>max&&a[0]+a[2]<=w)max=a[0]+a[2];
         if(a[0]+a[3]>max&&a[0]+a[3]<=w)max=a[0]+a[3];
         if(a[1]+a[2]>max&&a[1]+a[2]<=w)max=a[1]+a[2];
         if(a[1]+a[3]>max&&a[1]+a[3]<=w)max=a[1]+a[3];
         if(a[2]+a[3]>max&&a[2]+a[3]<=w)max=a[2]+a[3];
         if(a[0]+a[1]+a[2]>max&&a[0]+a[1]+a[2]<=w)max=a[0]+a[1]+a[2];
         if(a[0]+a[1]+a[3]>max&&a[0]+a[1]+a[3]<=w)max=a[0]+a[1]+a[3];
         if(a[0]+a[2]+a[3]>max&&a[0]+a[2]+a[3]<=w)max=a[0]+a[2]+a[3];
         if(a[1]+a[2]+a[3]>max&&a[1]+a[2]+a[3]<=w)max=a[1]+a[2]+a[3];
         if(a[0]+a[1]+a[2]+a[3]>max&&a[0]+a[1]+a[2]+a[3]<=w)max=a[0]+a[1]+a[2]+a[3];
         cout<<max<<endl;
         }
    else cout<<w<<endl;
    cin>>n;
    return 0;
}
         
         
              
              
              
