#pragma once
/**
* Author: Teetat T.
* Date: 2024-07-21
* Description: Max Index Monoid class.
*/template<classT,classIDX=int,booltie_is_left=true>structMaxIdxMonoid{usingP=pair<T,IDX>;usingvalue_type=P;staticconstexprPop(constP&x,constP&y){if(x.first>y.first)returnx;if(x.first<y.first)returny;returntie_is_left?x:y;}staticconstexprPunit(){returnP(numeric_limits<T>::min(),IDX(-1));}};
#line 2 "group/monoid/max-idx.hpp"
/**
* Author: Teetat T.
* Date: 2024-07-21
* Description: Max Index Monoid class.
*/template<classT,classIDX=int,booltie_is_left=true>structMaxIdxMonoid{usingP=pair<T,IDX>;usingvalue_type=P;staticconstexprPop(constP&x,constP&y){if(x.first>y.first)returnx;if(x.first<y.first)returny;returntie_is_left?x:y;}staticconstexprPunit(){returnP(numeric_limits<T>::min(),IDX(-1));}};