// then sequential search using popcount over a int
// then sequential search using popcount over a char
// then sequential search bit a bit
+ if(x>ones) return (uint)(-1);
//binary search over first level rank structure
uint l=0, r=n/s;
// then sequential search using popcount over a int
// then sequential search using popcount over a char
// then sequential search bit a bit
+ if(x>n-ones) return (uint)(-1);
//binary search over first level rank structure
if(x==0) return 0;