#include <iostream>
using namespace std;
void get(int *a, int N,int i, int M, int j, int T, int k, int num, int& max){
//存在第j个背包
if(j<=M && i<=N){
//取第i个物品
if(a[i-1] <= k){
//第j个背包放得下物品i
if(max < (num+1)) max = num+1;
get(a,N,i+1,M,j,T,k-a[i-1],num+1,max);
}
else{
//第j个背包放不下物品i,所以决定扔掉第j个背包
get(a,N,i,M,j+1,T,T,num,max);
}
//不取第i个物品
get(a,N,i+1,M,j,T,k,num,max);
}
}
int main(){
int N,T,M;
int max;
while(cin>>N>>T>>M){
if((N>=1&&N<=20)&&(T>=1&&T<=20)&&(M>=1&&M<=20)){
int *a = new int[N];
for(int i=0;i<N;i++)
cin>>a[i];
max = 0;
get(a,N,1,M,1,T,T,0,max);
cout<<max<<endl;
delete []a;
}
}
return 0;
}