#3 adding permutations and combinations with unit tests