Upper Bound Using Binary Search