aW50IGJpbmFyeVNlYXJjaChpbnQgYXJyW10sIGludCBsZWZ0LCBpbnQgcmlnaHQsIGludCB0YXJnZXQpIAp7CiBpZiAobGVmdCAmZ3Q7IHJpZ2h0KQogcmV0dXJuIC0xOyAvLyBCYXNlIGNhc2U6IFRhcmdldCBub3QgZm91bmQKIGludCBtaWQgPSBsZWZ0ICsgKHJpZ2h0IC0gbGVmdCkgLyAyOwogaWYgKGFyclttaWRdID09IHRhcmdldCkKIHJldHVybiBtaWQ7IC8vIFRhcmdldCBmb3VuZAogaWYgKGFyclttaWRdICZndDsgdGFyZ2V0KQogcmV0dXJuIGJpbmFyeVNlYXJjaChhcnIsIGxlZnQsIG1pZCAtIDEsIHRhcmdldCk7IC8vIFNlYXJjaCBsZWZ0IGhhbGYKIHJldHVybiBiaW5hcnlTZWFyY2goYXJyLCBtaWQgKyAxLCByaWdodCwgdGFyZ2V0KTsgLy8gU2VhcmNoIHJpZ2h0IGhhbGYKfQ==
int binarySearch(int arr[], int left, int right, int target)
{
if (left > right)
return -1; // Base case: Target not found
int mid = left + (right - left) / 2;
if (arr[mid] == target)
return mid; // Target found
if (arr[mid] > target)
return binarySearch(arr, left, mid - 1, target); // Search left half
return binarySearch(arr, mid + 1, right, target); // Search right half
}