#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;
}