Anything with at least 2004 1's in the binary representation is obviously good. Just set $a_1$ to be the value of the smallest-valued 1 and $a_2$ to be the value of the second-smallest valued 1 and so on. When we reach $a_2004$, we take the rest of the digits. Clearly, this works.
Thus, if there are not enough 1's, there is a bunch of zeros, and with lots of zeros, we have long strings of zeros. Let's consider all the numbers with at least 10000 zeros in a row. We do the same thing with the 1's before the long string of zeros. Thus, for the higher-valued 1's, we combine them to form a unit.
$2^{10000} = 2^{9998} + 3 \times 2^{9998} = 2^{9996} + 3^2 \times 2^{9996} + 3 \times 2^{9998} = 2^{9994} + 3^3 \times 2^{9994} + 3^2 \times 2^{9996} + 3 \times 2^{9998}...$
So, we can break this last bit into at least 5000 different terms, and into as many terms as we want.
Thus, we are left with finitely many numbers, which is what we wanted to show.