Got product working for any amount of ranges, empty range past first still causes segfault, but fuck anyone who tries to get the cartesian product of an empty range