#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int first(vector<int> &arr, int low, int high, int k) {
if (high >= low) {
int mid = low + (high - low) / 2;
if ((mid == 0 && arr[mid] == k) || (k > arr[mid - 1] && arr[mid] == k)) {
return mid;
} else if (arr[mid] < k) {
return first(arr, mid + 1, high, k);
} else {
return first(arr, low, mid - 1, k);
}
}
return -1;
}
int last(vector<int> &arr, int low, int high, int k) {
if (high >= low) {
int mid = low + (high - low) / 2;
if ((mid == arr.size() - 1 && arr[mid] == k) || (k < arr[mid + 1] && arr[mid] == k)) {
return mid;
} else if (arr[mid] > k) {
return last(arr, low, mid - 1, k);
} else {
return last(arr, mid + 1, high, k);
}
}
return -1;
}
int main() {
vector <int> arr = {1, 2, 2, 2, 3, 4, 4, 5, 6, 7, 8, 9};
int k = 2;
cout << first(arr, 0, arr.size()-1, k) << endl;
cout << last(arr, 0, arr.size()-1, k) << endl;
return 0;
}