If you wish to enumerate all the combinations, then I'd suggest a different approach. If each set is either included or not included, then you can represent this as a bit pattern. Bit 0 = set 0 enabled, Bit 1 = set 1 enabled. Then you could count 1-31 (in your example, and this would enable all the possible combinations of sets. Then you just need to check whether the enabled sets produce a covering.
Darryl.