#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstdio>
#include<string>
#include<cstring>
#include<vector>
#include<queue>
#include<map>

using namespace std;

int n,w,a[1024],dp[10001],used[10001][1024];
vector<int> v[10001];

int main()
{
    int i,j,k,sz,pos=0;
    scanf("%d%d",&n,&w);

    for(i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
        dp[a[i]]=1;pos=a[i];
        used[a[i]][a[i]]=1;
        v[a[i]].push_back(a[i]);
    }

    sort(a+1,a+n+1);

    dp[0]=1;
    for(i=a[1]+1;i<=w;i++)
    {
        if(!dp[i])
        {
            for(j=1;j<=n;j++)
            if(i-a[j]>=0&&dp[i-a[j]]&&!used[i-a[j]][a[j]])
            {
                v[i].push_back(a[j]);
                sz=v[i-a[j]].size();
                for(k=0;k<sz;k++)
                {
                    used[i][v[i-a[j]][k]]=1;
                    v[i].push_back(v[i-a[j]][k]);
                }
                dp[i]=1;pos=i;
            }
        }
    }

    printf("%d\n",pos);
    return 0;
}
