AM: Cartesian() takes an array, optionally