divide and conqure also need to consider INT MIN boundary