#include<iostream>
#include<fstream>
#include<iomanip>
#include<algorithm>
#include<map>
#include<cmath>
#include<cstring>
#include<string>
#include<queue>
#include<stack>
#include<cstdio>
#include<cstdlib>
using namespace std;
int n,k,sum,a[1024],br[1024],m,used[1024],yes;
void solveitnow ()
{
    int i;

    for (i=1;i<=m;i++)
    {
        if (k%i==0&&k<=br[i]){yes=1;cout<<k<<endl;return ;}
    }

    for (i=1;i<=m;i++)
    {
        if (used[i]==br[i])continue;

        for (int j=1;j<=br[i];j++)if (br[k-j*i]){yes=1;cout<<k<<endl;return ;}
    }
}
void greedy ()
{
    int i,j;
    for (i=0;i<n;i++)
    {
        if (sum+a[i]<=k)sum+=a[i];
        else {
            if (sum==k){yes=1;cout<<k<<endl;return ;}
        }
    }
    sum=0;
    for (i=n-1;i>=0;i--)
    {
        if (sum+a[i]<=k)sum+=a[i];
        else
            {
            if (sum==k){yes=1;cout<<k<<endl;return ;}
        }
    }
    sum=0;
    i=0;
    j=n-1;
    while (i<j)
   {
    if (a[i]+a[j]==k){yes=1;cout<<k<<endl;return ;}
    else if (a[i]+a[j]<k)i++;
    else j--;
   }
   sum=0;
    i=0;j=n-1;
    while (i<j)
    {
        if (sum==k){yes=1;cout<<k<<endl;return ;}
        if (sum+a[i]<=k)sum+=a[i];
        if (sum+a[j]<=k)sum+=a[j];
    }
    sum=0;
    i=0;j=n-1;
    while (i<j)
    {
        if (sum==k){yes=1;cout<<k<<endl;return ;}

        if (sum+a[j]<=k)sum+=a[j--];
        if (sum+a[i]<=k)sum+=a[i++];
    }

}
int main ()
{
    int i,j,l=0;
    scanf("%d%d",&n,&k);
    for (i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
        if (a[i]==k)l=1;
        br[a[i]]++;
        m=max(m,a[i]);
    }
    if (l==1){cout<<k<<endl;return 0;}


    solveitnow();if (yes)return 0;
    greedy ();
    if (yes)return 0;
    cout<<k-a[0]<<endl;
    //for (i=0;i<=m;i++)cout<<br[i]<<" ";cout<<endl;



    return 0;
}

/*

10 12
4 10 8 5 15 5 3 1 5 6
*/
