sig
module Min : sig type t = int val append : t -> t -> t val zero : t end
module Max : sig type t = int val append : t -> t -> t val zero : t end
module Sum : sig type t = int val append : t -> t -> t val zero : t end
module Product : sig type t = int val append : t -> t -> t val zero : t end
end