3 * Begin by trying to define `X1` and `X2` directly, then once they're working, you can abstract back to a pair of combinators `Y1` and `Y2` that generate `X1` and `X2` for a given pair of arguments `T1` and `T2`.
10 * X1 is presumably going to have some form like:
13 (do-something-with-the-elems-to-make-X1)
14 (do-something-with-the-elems-to-make-X2)
16 some-elem1 some-elem2 ...
18 Right? What will the form of X2 be?
20 * Can you see how to go on?
22 * Call the displayed abstract above `(\elem1 elem2 ... (...))` "elem0". What's the relation between `X1`, `elem0`, `elem1`, `elem2`...?
24 * Go on, now you can do it.