#include <iostream>
#include <bits/stdc++.h>
using namespace std;
vector<int> searchRange(vector<int>& nums, int target) {
vector<int>ans;
int n=nums.size();
int low=0;
int high=n-1;
int l1=-1;
while(low<=high){
int mid=(low+high)/2;
if(nums[mid]==target){
l1=mid;
high=mid-1;
}
else if(nums[mid]>target){
high=mid-1;
}
else{
low=mid+1;
}
}
ans.push_back(l1);
int h1=-1;
low=0;
high=n-1;
while(low<=high){
int mid=(low+high)/2;
if(nums[mid]==target){
h1=mid;
low=mid+1;
}
else if(nums[mid]>target){
high=mid-1;
}
else{
low=mid+1;
}
}
ans.push_back(h1);
return ans;
}
int main() {
int n;
cin>>n;
vector<int>arr(n);
for(int i=0;i<n;i++){
cin>>arr[i];
}
int target;
cin>>target;
vector<int>ans=searchRange(arr,target);
cout<<"Lower bound: "<<ans[0]<<" Upper bound: "<<ans[1]<<endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiB2ZWN0b3I8aW50PiBzZWFyY2hSYW5nZSh2ZWN0b3I8aW50PiYgbnVtcywgaW50IHRhcmdldCkgewogICAgICAgIHZlY3RvcjxpbnQ+YW5zOwogICAgICAgIGludCBuPW51bXMuc2l6ZSgpOwogICAgICAgIAogICAgICAgIGludCBsb3c9MDsKICAgICAgICBpbnQgaGlnaD1uLTE7CiAgICAgICAgaW50IGwxPS0xOwogICAgICAgIHdoaWxlKGxvdzw9aGlnaCl7CiAgICAgICAgICAgIGludCBtaWQ9KGxvdytoaWdoKS8yOwogICAgICAgICAgICBpZihudW1zW21pZF09PXRhcmdldCl7CiAgICAgICAgICAgICAgICBsMT1taWQ7CiAgICAgICAgICAgICAgICBoaWdoPW1pZC0xOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYobnVtc1ttaWRdPnRhcmdldCl7CiAgICAgICAgICAgICAgICBoaWdoPW1pZC0xOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICBsb3c9bWlkKzE7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGFucy5wdXNoX2JhY2sobDEpOwoKICAgICAgICBpbnQgaDE9LTE7CiAgICAgICAgbG93PTA7CiAgICAgICAgaGlnaD1uLTE7CiAgICAgICAgd2hpbGUobG93PD1oaWdoKXsKICAgICAgICAgICAgaW50IG1pZD0obG93K2hpZ2gpLzI7CiAgICAgICAgICAgIGlmKG51bXNbbWlkXT09dGFyZ2V0KXsKICAgICAgICAgICAgICAgIGgxPW1pZDsKICAgICAgICAgICAgICAgIGxvdz1taWQrMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKG51bXNbbWlkXT50YXJnZXQpewogICAgICAgICAgICAgICAgaGlnaD1taWQtMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgbG93PW1pZCsxOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBhbnMucHVzaF9iYWNrKGgxKTsKCiAgICAgICAgcmV0dXJuIGFuczsKCiAgICAgICAgCiAgICB9CgppbnQgbWFpbigpIHsKCWludCBuOwoJY2luPj5uOwoJdmVjdG9yPGludD5hcnIobik7Cglmb3IoaW50IGk9MDtpPG47aSsrKXsKCQljaW4+PmFycltpXTsKCX0KCWludCB0YXJnZXQ7CgljaW4+PnRhcmdldDsKCQoJdmVjdG9yPGludD5hbnM9c2VhcmNoUmFuZ2UoYXJyLHRhcmdldCk7Cgljb3V0PDwiTG93ZXIgYm91bmQ6ICI8PGFuc1swXTw8IiBVcHBlciBib3VuZDogIjw8YW5zWzFdPDxlbmRsOwoJcmV0dXJuIDA7Cn0=