#include<bits/stdc++.h>
#define ll long long
// Return the INDEX of the LEFTMOST element that is >= a value.
// Return -1 if not found.
template <typename T>
int bsearch_leftmost_larger_or_equal(T *array,
int first_idx, int last_idx, T value, bool shouldSort) {
if (shouldSort) {
sort(array + first_idx, array + last_idx);
}
int first = first_idx, last = last_idx, mid;
while (first != last) {
mid = (first + last) / 2;
if (array[mid] >= value)
last = mid;
else
first = mid + 1;
}
if (array[first] >= value)
return first;
else
return -1;
}