Semigroup and Monoid.