#include <iostream>
#include <fstream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <algorithm>
#include <string>
#include <vector>
#include <stack>
#include <queue>
#include <map>
#include <set>

using namespace std;

int dp[1024][10024],n,Sum,Price[1024],Ans;

void Read ()
{
    int i,j;
    ///scanf ("%d%d",&n,&Sum);
    cin>>n>>Sum;
    for (i=0;i<n;i++)
    ///scanf ("%d",&Price[i]);
    cin>>Price[i];
}

void Backpack ()
{
    int i,j;
    for (i=0;i<n;i++)
    dp[i][0]=0;
    for (i=0;i<=Sum;i++)
    dp[0][i]=0;

    for (i=0;i<n;i++)
    {
        for (j=1;j<=Sum;j++)
        {
            dp[i][j]=dp[i-1][j];
            if (dp[i][j]<dp[i-1][j-1]+Price[i])dp[i][j]=dp[i-1][j-1]+Price[i];
        }
    }

    for (i=0;i<n;i++)
    {
        for (j=1;j<=Sum;j++)
        if (dp[i][j]<=Sum&&dp[i][j]>Ans)Ans=dp[i][j];
        ///printf ("%d ",dp[i][j]);
        ///printf ("\n");
    }
}

int main ()
{
    Read ();
    Backpack ();
    ///printf ("%d\n",Ans);
    cout << Ans <<endl;
    return 0;
}
