#include #include #include #include #include #include #include #include #include #include using namespace std; #define ll long long int main( void ) { ll fib[1000]; fib[0] = 0; fib[1] = 1; int nfib = 0; for( int i = 2; i < 1000; i ++ ){ fib[i] = fib[i-1] + fib[i-2]; nfib = i; if( fib[i] > 1000000000 ) break; } FILE *in = fopen( "pack.in", "r" ); while( 1 ){ int N, pad, M; fscanf( in, "%d%d%d", &N, &pad,&M ); if( N == 0 && pad == 0 && M == 0 ) break; vector< int > e; for( int i = 0; i < N; i ++ ){ int j; fscanf( in, "%d", &j ); for( int k = 0; k < nfib; k ++ ){ if( fib[k] >= j ){ j = fib[k] - j; break; } } e.push_back( j ); } sort( e.begin(), e.end() ); int naa = 0; for( int i = 0; i < N; i ++ ){ if( pad >= e[i] ){ pad -= e[i]; naa ++; } } printf( "%d\n", naa ); } return 0; }