278. First Bad Version

class Solution:
    def firstBadVersion(self, n: int) -> int:
        l, r = 1, n
        
        while True:
            m = (l+r)//2
            
            if isBadVersion(m) and not isBadVersion(m-1):
                return m
            elif isBadVersion(m) and isBadVersion(m-1):
                r = m - 1
            else:
                l = m + 1