def METHOD_NAME(self, key):
    if self.minimum == self.maximum:
        self.minimum = self.maximum = -1
        return
    if self.universe_size == 2:
        if key == 0:
            self.minimum = 1
        else:
            self.minimum = 0
        self.maximum = self.minimum
        return
    if key == self.minimum:
        first_cluster = self.summary.minimum
        key = first_cluster * int(math.sqrt(self.universe_size)) + self.cluster[first_cluster].minimum
        self.minimum = key
    self.cluster[key // int(math.sqrt(self.universe_size))].METHOD_NAME(key % int(math.sqrt(self.universe_size)))
    if self.cluster[key // int(math.sqrt(self.universe_size))].minimum == -1:
        self.summary.METHOD_NAME(key // int(math.sqrt(self.universe_size)))
    if key == self.maximum:
        if self.summary.minimum == -1:
            self.maximum = self.minimum
        else:
            last_cluster = self.summary.maximum
            self.maximum = last_cluster * int(math.sqrt(self.universe_size)) + self.cluster[last_cluster].maximum