#include<bits/stdc++.h>
using namespace std;
template <class T> void re(T &x);
int n,m,sum,ans;
int a[23];
int ta[23];
bitset<2005>f;
void bag()
{
int curans(0);
f.reset();
f[0]=1;
for(int i=1;i<=n;++i)
{
for(int j=sum;j>=a[i];--j)
{
f[j]=f[j]|f[j-a[i]];
}
}
for(int i=1;i<=sum;++i)
if(f[i])++curans;
ans=max(ans,curans);
return;
}
void dfs(int c,int k)
{
if(k==0)
{
bag();
return;
}
for(int i=c+1;i<=n;++i)
{
sum-=a[i];
a[i]=0;
dfs(i,k-1);
a[i]=ta[i];
sum+=a[i];
}
return;
}
int main()
{
re(n);re(m);
for(int i=1;i<=n;++i)
{
re(a[i]);
sum+=a[i];
ta[i]=a[i];
}
dfs(0,m);
cout<<ans;
return 0;
}
template <class T> void re(T &x)
{
x=0;bool f=0;char ch=getchar();
while(ch<'0'||ch>'9')
{f|=(ch=='-');ch=getchar();}
while(ch>='0'&&ch<='9')
{x=x*10+ch-48;ch=getchar();}
if(f)x=-x;
}