#undef min
#undef max
template < typename T > inline T min(T a, T b) { return std::min(a, b); }template < typename T > inline T max(T a, T b) { return std::max(a, b); }
#undef min
#undef max
template < typename T > inline T min(T a, T b) { return std::min(a, b); }