code: def __findFirstMissing(self, array, start, end):
          if (start > end):
              return end + 1
          if (start != array[start]):
              return start
          mid = int((start + end) / 2)
          if (array[mid] == mid):
              return self.__findFirstMissing(array, mid + 1, end)
          return self.__findFirstMissing(array, start, mid)