My question is, what list *p* in the following statement returns the list *q*?

    Tuples[{{p},{q}}]

If we think of Tuples as a binary operator then *p* would be the identity for Tuples.

I thought an empty list would work, but evaluating the following

    Tuples[{{},{1,2,3}}]

gives {} instead of {1,2,3} or {{1},{2},{3}} as I had hoped.

The following doesn't work either:

    Tuples[{{\[EmptySet]},{1,2,3}}]

Certainly, I could write a function like the following

    altTuples[p_List,q_List]:= If[Length[p]==0,q,Tuples[{p,q}]

That does exactly what I want, but I want to know if I'm missing something. Is there in fact an identity for Tuples? Is there a way to do what I want with Outer? I've tried the obvious solutions with no luck.