Help Rahul Search : 2nd test case not passing: giving wrong answer

import java.util.*;

public class Main
{
public static void main(String [] args)
{
Scanner s = new Scanner (System.in);

	int n = s.nextInt();

	int [] A = new int[n];

	for(int i = 0; i<n; i++)
		A[i] = s.nextInt();

	int item = s.nextInt();

	int minElementIndex = minIndex(A,n);

	int index;

	index = binarySearchElement(A, item, 0, minElementIndex - 1);

	if(index == -1)
		index = binarySearchElement(A, item, minElementIndex, n-1);

	System.out.println(index);
}


public static int minIndex(int [] A, int n)
{
	int index = 0, mid, pre, next;
	int si = 0, ei = n-1; 
	
	
	while(si <= ei)
	{
		mid = si + (ei - si)/2;
		pre = (mid - 1 + n)%n;
		next = (mid + 1)%n;
		
		if(A[mid] <= A[pre] && A[mid] <= A[next])
		{
			index = mid;
			break;
		}
		else if(A[mid] >= A[si])
			si = mid + 1;
		else 
			ei = mid - 1;
	}


	return index;
}


public static int binarySearchElement(int [] A, int item, int si, int ei)
{
	int mid;
	
	while(si <= ei)
	{
		mid = si + (ei - si)/2;

		if(A[mid] == item)
			return mid;
		else if(item > A[mid])
			si = mid + 1;
		else
			ei = mid - 1;
	}

	return -1;
}

}

5
3
4
5
1
2
2
Correct output:
4
Your output:
-1

watch this video

Day 10 - Help Rahul | Binary Search Question on Rotate Array | Solve & Win