int find(const std::vector<int>& v, int target) { int lo = 0, hi = v.size(); while (lo <= hi) { int mid = (lo + hi) / 2; if (v[mid] == target) return mid; if (v[mid] < target) lo = mid; else hi = mid; } return -1; }