I will use 0-indexing here.
For , consider the following numbers (shown in binary):
,
,
,
,
Notice that, there is exactly one off bit in each of the numbers and all those positions of off bits are distinct. So what happens when you take a subset of indices and compute the bitwise AND of the values of those indices? Yeah, you will get a number where only the -th bits are off and other bits are on! So bitwise AND of all subsets will be distinct! So that means you can generate all numbers from to . To get , just add this number. So numbers are enough. You can append any other numbers to get a total of numbers.
So, just set for to and set and append any other numbers to get a total of numbers.
Pretty cute! Just like you.