// 查找 a 数组的 [head, tail] 单调序列中 t 第一次出现的位置
int query(const int &t, int head, int tail){
while(head <= tail){
int mid = (head + tail) >> 1;
if(t > a[mid])head = mid + 1;
if(t < a[mid])tail = mid - 1;
if(t == a[mid])tail = mid;
if(head >= tail && a[mid] == t)return mid;
}
return -1; // -1 表示未找到
}