#pragma once
#include<utility>namespacehaar_lib{template<typenameMonoid1,typenameMonoid2>structpair_monoid{usingvalue_type=std::pair<typenameMonoid1::value_type,typenameMonoid2::value_type>;conststaticMonoid1M1;conststaticMonoid2M2;value_typeoperator()()const{return{M1(),M2()};}value_typeoperator()(constvalue_type&a,constvalue_type&b)const{return{M1(a.first,b.first),M2(a.second,b.second)};}};}// namespace haar_lib