generate all combinations of a list java