l = 0, h = n-1;
while (h - l > 1) // a.k.a. (h - l) >=2 --> l < (l+h)/2 < h
{
	mid = (l+h)/2;
   	if P(mid) l = mid;
   	else h = mid;
}
for (i = h; i>=l; i--)
{
	if P(i) return i;
}
assert(false);