#include <iostream>
using namespace std;
int
n, m, t, f[21], g[21];
void
__read__()
{
cin >> n >> t >> m;
}
void
__init__()
{
for( int i = 0; i <= n; i++ ) //初始化很重要!
g[i] = f[i] = 9999999;
f[0] = 0;
}
void
__dp__()
{
for( int i = 1; i <= n; i++ )
{
int l;
cin >> l;
if( l > t ) //题目说了不会出现这种情况,可是还是出现了
continue; //因为这个WA了不下5次,。。
for( int j = i; j > 0; j-- )
if( g[j - 1] + l > t )
{
if( f[j - 1] + 1 < f[j] )
{
f[j] = f[j - 1] + 1;
g[j] = l;
}
if( f[j - 1] + 1 == f[j] )
if( g[j] > l )
g[j] = l;
}
else
{
if( f[j - 1] < f[j] )
{
f[j] = f[j - 1];
g[j] = g[j - 1] + l;
}
if( f[j - 1] == f[j] )
if( g[j] > g[j - 1] + l )
g[j] = g[j - 1] + l;
}
}
}
void
__outp__()
{
for( int i = n; i >= 0; i-- ) //因为这个没带等号WA了1,2次。。汗。。
if( f[i] <= m )
{
cout << i << endl;
return;
}
}
int
main()
{
__read__();
__init__();
__dp__();
__outp__();
return 0;
}