divide to conquer