#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<set>
#include<map>
#define L(x) (x<<1)
#define R(x) (x<<1|1)
#define MID(x,y) ((x+y)>>1)
#define eps 1e-8
using namespace std;
#define N 105
int a[N];
int n,m,s;
int dp[N][N];
multiset<int>ss;
multiset<int>::iterator it;
int get(int x,int y)
{
ss.clear();
for(int i=x;i<=y;i++)
ss.insert(a[i]);
int ans=0;
int temp=m;
for(it=ss.begin();it!=ss.end();++it)
{
if(temp<*it) break;
ans++;
temp-=*it;
}
return ans;
}
int dfs(int x,int y)
{
if(x>=n) return 0;
if(y>=s) return 0;
if(dp[x][y]!=-1) return dp[x][y];
dp[x][y]=0;
for(int i=y;i<s;i++)
{
dp[x][y]=max(dp[x][y],get(y,i)+dfs(x+1,i+1));
}
return dp[x][y];
}
int main()
{
int i,j;
while(~scanf("%d%d%d",&s,&m,&n))
{
for(int i=0;i<s;i++)
scanf("%d",&a[i]);
memset(dp,-1,sizeof(dp));
printf("%d\n",dfs(0,0));
}
return 0;
}