/*
变形的背包问题
dp[j][k]表示把当前的歌曲装到第j个CD,且已经装了k个容量时,能装的最多的歌曲数
当装第到第j个CD中时,dp[j][k]=dp[j][k-w[i]]+1;
当第j个装不开,要装到第j-1个中,即dp[j][k]=dp[j-1][m]+1。
*/
#include<iostream>
#include<cstdio>
using namespace std;
#define maxm 30
#define maxt 30
int n,m,t,dp[maxm][maxt],w[maxm];
int main(){
scanf("%d%d%d",&n,&m,&t);
for(int i=1;i<=n;i++)scanf("%d",&w[i]);
for(int i=1;i<=n;i++)
for(int j=t;j>=1;j--)
for(int k=m;k>=w[i];k--){
dp[j][k]=max(dp[j][k],dp[j][k-w[i]]+1);
dp[j][k]=max(dp[j][k],dp[j-1][m]+1);
}
printf("%d",dp[t][m]);
}