rangeQuery(int l, int r) {
return rangeQuery(1, 0, n, l, r);
}
template
int findFirst...if (r - l == 1) {
return l;
}
int m = (l + r) / 2;
int res = findFirst...(2 * p, l, m, x, y, pred);
if (res == -1) {
res = findFirst(2 * p + 1, m, r, x, y..., pred);
}
return res;
}
template
int findFirst(int l, int r, F...pred) {
return findFirst(1, 0, n, l, r, pred);
}
template
int findLast(int