#pragma once
/**
* Author: Teetat T.
* Date: 2024-04-14
* Description: Min Max Monoid class.
*/template<classT>structMinMaxMonoid{usingP=pair<T,T>;usingvalue_type=P;staticconstexprPop(constP&x,constP&y){returnP(min(x.first,y.first),max(x.second,y.second));}staticconstexprPunit(){returnP(numeric_limits<T>::max(),numeric_limits<T>::min());}};
#line 2 "group/monoid/minmax.hpp"
/**
* Author: Teetat T.
* Date: 2024-04-14
* Description: Min Max Monoid class.
*/template<classT>structMinMaxMonoid{usingP=pair<T,T>;usingvalue_type=P;staticconstexprPop(constP&x,constP&y){returnP(min(x.first,y.first),max(x.second,y.second));}staticconstexprPunit(){returnP(numeric_limits<T>::max(),numeric_limits<T>::min());}};