template<typename L, typename R> auto Min(const L& l, const R& r) -> decltype(l<r?l:r) {return l<r?l:r;} template<typename L, typename R> auto Max(const L& l, const R& r) -> decltype(l>r?l:r) {return l>r?l:r;}
template<typename L, typename R> auto Min(const L& l, const R& r) -> decltype(l<r?l:r) {return l<r?l:r;} template<typename L, typename R> auto Max(const L& l, const R& r) -> decltype(l>r?l:r) {return l>r?l:r;}