def __init__(self, arr: list[T], fnc: Callable[[T, T], T]) -> None:
        any_type: Any | T = None

        self.N: int = len(arr)
        self.st: list[T] = [any_type for _ in range(self.N)] + arr
        self.fn = fnc
        self.build()