You are a product manager and currently leading a team to develop a new product. Unfortunately, the latest version of your product fails the quality check. Since each version is developed based on the previous version, all the versions after a bad version are also bad.

Suppose you have `n` versions `[1, 2, ..., n]` and you want to find out the first bad one, which causes all the following ones to be bad.

You are given an API `bool isBadVersion(version)` which will return whether `version` is bad. Implement a function to find the first bad version. You should minimize the number of calls to the API.

Example:

```Given n = 5, and version = 4 is the first bad version.

```call isBadVersion(3) -> false

Then 4 is the first bad version. ``````
``` 1 bool isBadVersion(int version);
2
3 class Solution {
4 public:
6         int low = 1;
7         int high = n;
8         int res = 0;
9         while(low < high) {
10             int mid = low + (high - low) / 2;
12                 high = mid;
13             } else {
14                 low = mid+1;
15             }
16         }
17         return high;
18     }
19 };```

`` ``