Generate all possible combinations