#include<bits/stdc++.h>
using namespace std;
int n,a[30],m,ans;
bool dp[3000],vis[30];
void _dp(){
memset(dp,0,sizeof(dp));
dp[0]=1;
int tot=0,res=0;
for(int i=0;i<n;++i){
if(vis[i])
continue;
for(int j=tot;j>=0;--j)
if(dp[j]&&!dp[tot+a[i]]){
dp[tot+a[i]]=1;
res++;
}
tot+=a[i];
}
ans=max(ans,res);
}
void dfs(int i,int cnt){
if(cnt>m)
return;
if(i==n){
if(cnt==m)
_dp();
return;
}
dfs(i+1,cnt);
vis[i]=1;
dfs(i+1,cnt+1);
vis[i]=0;
}
int main(){
cin>>n>>m;
for(int i=0;i<n;++i)
cin>>a[i];
dfs(0,0);
cout<<ans;
return 0;
}