use std::min,max