If the number is not divisible by 3 then use one 20 pack. If the remaining number is divisible by 3 then use the above method for the rest.

If the number still isn't divisible by 3 use
a second 20 pack. The remainder __must__
be divisible by 3, in which case use the 6 and 9
packs as above.

The largest impossible number would be such that you would have to subtract 20 twice to get a remainder divisible by 3. However, you can't make 3 itself with 6 and 9 packs. So the largest impossible number is 2*20+3=43.

Michael Shackleford, A.S.A.