#include <iostream>
using namespace std;

int upperBound(int arr[], int n, int x) {
    int low = 0;
    int high = n - 1;
    int ans = n;   // If no element is greater than x

    while (low <= high) {
        int mid = low + (high - low) / 2;

        if (arr[mid] > x) {
            ans = mid;
            high = mid - 1;
        }
        else {
            low = mid + 1;
        }
    }

    return ans;
}

int main() {
    int arr[] = {1, 2, 4, 4, 6, 8, 10};
    int n = 7;
    int x = 4;

    cout << "Upper Bound index = " << upperBound(arr, n, x);

    return 0;
}