#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int findMin(vector<int> & arr) {
    int low = 0;
    int high = arr.size() - 1;
    while (arr[low] > arr[high]) {
        int mid = (low + high) >> 1;
        if (arr[mid] > arr[high]) {
            low = mid + 1;
        } else {
            high = mid;
        }
    }
    return arr[low];
}

int main() {
	vector<int> a = {1,2,3,5,6,7,8,9,10};
	rotate(a.begin(), a.begin() + 4, a.end());
	for (int & i : a) cout << i << " ";
	cout << endl;
	cout << "Min is " << min(a[0], *is_sorted_until(a.begin(), a.end())) << endl;
	
	cout << "Min is " << findMin(a) << endl;
	return 0;
}