{-# LANGUAGE TypeFamilies #-}

-- | Extra module of pre-defined `SegAct` instances and helpful monoids.
--
-- @since 1.0.0.0
module AtCoder.Extra.Monoid
  ( -- * Re-exports

    -- | It's mainly a list. It is recommended to use specific submodules.

    -- ** SegAct
    SegAct (..),

    -- ** Affine1
    Affine1 (..),
    Affine1Repr,

    -- ** Mat2x2
    Mat2x2 (..),
    Mat2x2Repr,
    V2 (..),
    V2Repr,

    -- ** Range add
    RangeAdd (..),

    -- ** Range set
    RangeSet (..),
    RangeSetRepr,

    -- ** Rolling hash
    RollingHash,
  )
where

import AtCoder.Extra.Monoid.Affine1 (Affine1 (..), Affine1Repr)
import AtCoder.Extra.Monoid.Mat2x2 (Mat2x2 (..), Mat2x2Repr)
import AtCoder.Extra.Monoid.RangeAdd (RangeAdd (..))
import AtCoder.Extra.Monoid.RangeSet (RangeSet (..), RangeSetRepr)
import AtCoder.Extra.Monoid.RollingHash (RollingHash)
import AtCoder.Extra.Monoid.V2 (V2 (..), V2Repr)
import AtCoder.LazySegTree (SegAct (..))