Solution (source code)

= Solution

List each <Scala trait linearization> from the most specific <software class> toward the common base, omitting predefined types:
``
Life1, Party, Study, Life
Life2, Sport, Exercise, Research, Party, Study, Life
Life3, Research, Study, Sport, Party, Exercise, Life
``
For example, `Sport` alone linearizes as `Sport, Party, Exercise, Life`, while `Research` alone gives `Research, Party, Study, Life`. In combining parents, take the right parent's linearization first, deleting from it entries also present in the remaining left-parent linearization, then append the latter. This places a common base after all of its derived <traits>.<Scala 2.11 classes and objects specification>[Class Linearization]{ref}

An unqualified `super.describe()` continues after the current <trait> in the actual receiver's <Scala trait linearization>. Each override prints after its `super` call, so the output follows the displayed order backwards, starting at `Life`. The complete output is:
``
I live.
More on study.
More on party.
I live.
More on study.
More on party.
More on research.
More on exercise.
More on sport.
I live.
More on exercise.
More on party.
More on sport.
More on study.
More on research.
``
The first three lines belong to `l1`, the next six to `l2`, and the final six to `l3`.
$$
\boxed{\text{Rightmost mixin has lookup priority; super-first printing reverses the lookup chain}.}
$$