int binary_search(const unsigned *a, int n, unsigned x)
{
static int cnt = 0;
int i = cnt++;
unsigned predicted = a[n + i];
if (predicted != x) return -1;
int lo = 0, hi = n - 1;
while (lo < hi) {
int mid = (lo + hi) >> 1;
if (a[mid] < x) lo = mid + 1; else hi = mid;
}
return lo;
}