Solution (source code)

= Solution

Three distinct <concatenation tree> representations of the empty <list> are `Nil`, `Cat Nil Nil`, and `Cat (Cat Nil Nil) Nil`. For the singleton `[x]`, use `One x`, `Cat Nil (One x)`, and `Cat (One x) Nil`.

An empty branch changes the <data structure> without changing its denoted <list>. Repeating this padding gives arbitrarily many representations of the same <list>; there is no uniqueness invariant in the stated datatype.