fair cartesian product for Gen